Docker + nginx 部署前端项目--记录

背景: 公司的项目前后端完全分离,所以前端需要独立部署

1、项目结构

      

项目打包后的静态资源在 dist 目录下

2、两个关键的文件 Dockerfile 和 nginx.conf

Dockerfile 放在根目录下

Dockerfile内容如下:

FROM nginx:stable-alpine
COPY dist/ /usr/share/nginx/html/
RUN rm /etc/nginx/conf.d/default.conf
COPY deploy/nginx.conf /etc/nginx/conf.d/default.conf
CMD ["nginx", "-g", "daemon off;"]

nginx.conf 放在 deploy/ 下,通过配置代理,可以将http请求代理到后端服务的地址


server {
    listen       8088;
    server_name  localhost;
    client_max_body_size 20g;
    keepalive_timeout 6000s;
    fastcgi_connect_timeout 6000;
    fastcgi_send_timeout 6000;
    fastcgi_read_timeout 6000;

    access_log  /var/log/nginx/host.access.log  main;
    error_log  /var/log/nginx/error.log  error;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
        try_files $uri $uri/ /index.html;
    }
    location /nginx/ {
        proxy_set_header Host $host;
        proxy_set_header  X-Real-IP        $remote_addr;
        proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_set_header X-NginX-Proxy true;
        proxy_pass http://xxxx:8080/; #后面带斜杠 会把匹配到的 /nginx/ 去掉
    }
     location /kapis/ {
        proxy_set_header Host $host;
        proxy_set_header  X-Real-IP        $remote_addr;
        proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_set_header X-NginX-Proxy true;
        proxy_pass http://xxxx:8889/; #后面带斜杠 会把匹配到的 /nginx/ 去掉
     }
     location /apis {
         proxy_set_header Host $host;
         proxy_set_header  X-Real-IP        $remote_addr;
         proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
         proxy_set_header X-NginX-Proxy true;
         proxy_pass http://xxxx:8889;
     }
     location /oss/file/upload {
            proxy_connect_timeout 6000s;
            proxy_send_timeout 6000s;
            proxy_read_timeout 6000s;
            proxy_method POST;  #上传文件等操作静态资源的请求需要加这个
            proxy_pass http://xxxx:8080;
     }
   
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

        Dockerfile 中 有一处需要与 nginx.conf 对应

        

 

 

3、部署步骤

        (1)项目打包好之后,将整个项目上传到服务器;(我是直接在服务器通过 git 拉取);

           (2) 进入到项目目录,通过 docker 生成镜像 

docker build -f Dockerfile -t 你的镜像名xxx .

               (3) 运行docker

docker run -d -p 8088:8088 你的镜像名

          (4) 访问8088端口

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!要在Docker部署Nginx前端项目,您可以按照以下步骤进行操作: 1. 首先,确保您已经安装了Docker。如果没有安装,请根据您的操作系统进行安装。 2. 创建一个新的文件夹,用于存放您的前端项目文件。假设您将其命名为"my-frontend"。 3. 在"my-frontend"文件夹中创建一个名为"Dockerfile"的文件,并将以下内容添加到文件中: ``` # 使用Nginx作为基础镜像 FROM nginx # 将前端项目文件复制到Nginx的默认网站目录 COPY . /usr/share/nginx/html # 可选:如果您的前端项目需要使用特定的Nginx配置文件,可以将配置文件复制到/etc/nginx/conf.d/目录下 # 暴露Nginx默认的80端口 EXPOSE 80 # 启动Nginx CMD ["nginx", "-g", "daemon off;"] ``` 4. 将您的前端项目文件复制到"my-frontend"文件夹中。 5. 打开命令行终端,并导航到"my-frontend"文件夹。 6. 构建Docker镜像。在命令行中运行以下命令: ``` docker build -t my-frontend-image . ``` 这将根据"Dockerfile"中的配置构建一个名为"my-frontend-image"的Docker镜像。请确保在命令末尾的"."表示当前目录。 7. 运行Docker容器。在命令行中运行以下命令: ``` docker run -d -p 80:80 my-frontend-image ``` 这将在后台运行一个名为"my-frontend-container"的Docker容器,并将宿主机的80端口映射到容器的80端口。 现在,您的前端项目已经通过Nginx成功部署Docker中了。您可以通过访问http://localhost 来查看您的项目。 请注意,上述步骤假设您的前端项目不需要任何特殊的Nginx配置。如果您的项目需要自定义Nginx配置,请将配置文件复制到"Dockerfile"中指定的目录,并相应地修改配置文件的名称和路径。 希望这能对您有所帮助!如果您有任何其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值