阿里云 docker-compose+django+nginx 服务器部署

docker-compose+django+nginx 服务器部署

使用docker-compose搭建容器项目,并完成服务器部署,建议提前了解一些docker相关的知识.如果之前没有了解过,可以参考一下: https://www.runoob.com/docker/docker-tutorial.html

一 项目环境准备

参考上面网址的教程搭建好docker和docker-compose环境,新建空文件夹,构建项目目录,

这是项目的基本目录结构

二 编写文件

docker-compose.yml文件:
version: '3'
  
services:

    web:
       build: .
       restart: always
       privileged: true
       command: bash -c "uwsgi --ini /code/conf/uwsgi.ini  && tail -f /dev/null"
       tty: true
       volumes:
         - .:/code
         - static-volume:/code/web_server/web/static
       expose:
         - "8000"
       networks:
         - web_network

    nginx:
       image: nginx:1.19.0-alpine
       restart: always
       depends_on:
           - web
       links:
           - "web:web"
       privileged: true
       ports: 
           - "80:8000"
       volumes: 
           - static-volume:/code/web_server/web/static
           - ./nginx/conf:/etc/nginx/conf.d
           - ./nginx/log:/var/log/nginx
       networks:
           - web_network
      

networks:
   web_network:
          driver: bridge

volumes:
	static-volume:

配置解释说明:
networks: docker允许用户给容器定义工作网络,相同网络中的容器能够正常通信.
volumes数据卷: static-volume:/code/web_server/web/static,冒号后面是容器中对应文件的位置,前面的static-volume仅仅是个数据卷名字,并非宿主机目录

Dockerfile文件

FROM python
WORKDIR /code
ADD ./web_server/web/requirements.txt /code
WORKDIR /code
RUN pip install --upgrade pip
RUN pip install  -r requirements.txt(这里建议换成国内源安装)

uwsgi.ini文件

[uwsgi]
# Django-related settings
# the base directory (full path)
chdir           =/code/web_server/web
module          =web.wsgi
# process-related settings
# master
master          = true
# maximum number of worker processes
processes       = 10
# the socket (use the full path to be safe)
uwsgi-socket    = 0.0.0.0:8000
chmod-socket    = 666
# clear environment on exit
vacuum          = true
daemonize       = /code/run.log
enable-threads  = true
wsgi-disable-file-wrapper =true
pidfile         = /code/uwsgi.pid
                                                                                                                                                                                                                                               

nginx配置文件

upstream web{
    ip_hash;
    server web:8000;
}

server {
        listen 8000;
        server_name www.test.com;#你自己的域名或者localhost
        charset utf-8;

        # max upload size
        client_max_body_size 75M; # adjust to taste

        # Django media
        location /static {
               # autoindex on;
                alias /code/web_server/web/static;
        }
        location / {
                uwsgi_pass web;
                include uwsgi_params;
        }
}

这里的nginx配置监听端口要配置成8000,因为之前我们的nginx项目是8000端口,nginx容器对外暴露的是80端口,确保宿主机的80端口没有被占用

(ps:django项目的settings.py中allowed_hosts记得配置成allowed_hosts=["*"]

三 执行命令

在项目根目录依次执行docker-compose build ,docker-compose up -d 命令,若一切正常,则可以在浏览器通过域名或者ip地址访问我们的项目了
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值