docker部署nginx--(部署静态文件和服务)

文档参考
1、http://testingpai.com/article/1649671014266

2、下载nginx

docker pull nginx:alpine
然后启动nginx,
docker run --rm -it -p 9192:80 nginx:alpine /bin/sh
关闭容器后,自动删除该容器
进入后,启动nginx,

nginx

进行curl http://127.0.0.1:9192(记得服务器进行端口放开)
也可以进行浏览器进行方位。
cat /etc/nginx/conf.d/default.conf

# 删除的就是读取默认
server {
    location / {
        root   /usr/share/nginx/html;
    }
}

修改文件之后,重新启动nginx,
nginx -s reload
具体可以看最上面的连接。

3、继续上次的文章,

收集django中的静态文件

# settings.pro.py
STATIC_ROOT = BASE_DIR / 'static'

然后执行
python manage.py collectstatic
目录下会有一个静态文件,
注意,得到静态文件后,
要把STATIC_ROOT = BASE_DIR / ‘static’,注释掉,要不然运行会报错

4、创建nginx目录,在djangoapp同级目录下

并在该nginx文件夹上传static文件,
创建文件 touch default.conf

server {
   listen       80;  # 配置后端服务的监听端口
   server_name  www.hhxpython.com;  # 配置域名
   
   location /static/ {
      alias /usr/share/nginx/html/static/;  # 配置静态文件路径
   }

   location / {
      # 检查静态文件,如果不是代理到应用
      try_files $uri @proxy_to_app;
   }

   location @proxy_to_app {
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header Host $http_host;
      proxy_redirect off;
      proxy_pass http://django_app:8000;
   }

  }

5、和打包的前端文件dist,和static一样。
该server配置与上面的配置并列存在

server {
    listen 81;  # 配置前端项目服务的监听端口
    server_name   www.hhxpython.com;  # 配置域名
    root /usr/share/nginx/html/dist;       # 配置文件根路径

    location / {
       try_files $uri $uri/ @router; #需要指向下面的@router否则会出现vue的路由在nginx中刷新出现404
       index index.html;
    }

    #对应上面的@router,主要原因是路由的路径资源并不是一个真实的路径,所以无法找到具体的文件
    #因此需要rewrite到index.html中,然后交给路由在处理请求资源
    location @router {
             rewrite ^.*$ /index.html last;
    }

}

6、运行服务(太长了,可忽略,也能启动)
docker run --rm -it --network auto -p 9292:80 -p 9293:81 -v ***/nginx/dist:/usr/share/nginx/html/dist -v **/static://usr/share/nginx/html/static
-v */default.conf:/etc/nginx/conf.d/default.conf nginx:alpine /bin/sh

进入后,命令:nginx启动即可

7、写Dockerfile文件,

进行准备工作,就不需要上面那么长的命令行了

FROM nginx:alpine

COPY ./static/ /usr/share/nginx/html/static/
COPY ./dist/ /usr/share/nginx/html/dist/
COPY ./default.conf /etc/nginx/conf.d/

VOLUME /var/log/
EXPOSE 80 81

8、执行构建命令

docker build -t auto_nginx .

9、最后docker run 命令即可

docker run -d --name auto_nginx_app -p 9292:80 -p 9293:81 --network auto auto_nginx

# 这是上篇文章的docker 启动。换了了端口。可以忽略。
docker run --name app --network auto -p 9195:8000 -e TZ=Asia/Shanghai -e ENV="production" -d --restart=always -v auto_logs:/app/logs auto_app:latest

至此,手动部署结束,前后端结束,浏览器访问即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值