Docker部署全栈:六、部署Nginx和React

Docker部署全栈项目:六、部署Nginx和React

前端项目不论是 vue 还是 react,编译之后都是 html + css +js 的模板。

因此这里使用 React Demo 来演示如何部署前端项目至,Nginx的代理中。

一、创建React项目

如果你使用的是其它前端语言,或者直接是纯JS写法,都是大同小异。

# 创建React项目
$ create-react-app web

# 进入前端项目
$ cd web

# 构建项目(或者使用 npm run build)
$ yarn build 

# 构建完成后,会出现 build/ 目录,存放所有的静态资源文件

将构建后的数据,放到 nginx/html 目录下。

如果是远程服务器,可以使用 scp、pscp 等命令发送文件。

二、启动Nginx

1. 编写 start.sh

#!/bin/bash

# 启动前停止容器
docker stop luokaiii-nginx
docker rm luokaiii-nginx

# 运行容器
docker run --name luokaiii-nginx \ # 指定容器名
        -p 80:80 \    # 暴露80端口至宿主机
        -v /${PWD}/conf:/etc/nginx/conf.d \    # 挂载额外的配置文件
        -v /${PWD}/html:/usr/www/luokaiii/cn/html \    # 挂载静态资源
        -d nginx:alpine     # 后台运行nginx

2. 编写 conf/nginx.conf

server {
        listen 80;

        root /usr/www/luokaiii/cn/html;

        location / {
                try_files $uri $uri/ /index.html;
        }
}

3. 运行脚本

# 运行脚本
$ ./start.sh

4. 访问端口

访问80端口

三、使用Nginx代理接口服务

既然我们的接口使用的是容器服务,那么我可以把 luokaiii-api 的外部端口关闭,改为 nginx 的请求转发。

修改 nginx.conf:

upstream apisupport {
        server api:8080;
}
server {
        listen 80;

        root /usr/www/luokaiii/cn/html;

        location / {
                try_files $uri $uri/ /index.html;
        }

        # 将 /api/ 请求转发至 `luokaiii-api` 服务
        location /api/ {
                proxy_pass http://apisupport/;
        }
}

请求测试:

请求结果

参考资料:

  1. Docker Hub

项目地址

文章作者: koral
文章链接: http://luokaiii.github.io/2019/09/19/读书笔记/《Docker全栈项目部署》/6.Nginx/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自