![](https://ywhao.bitworkshop.cn/wp-content/uploads/2022/08/2022-03-23-201315.jpg)
1.Dockerfile制作镜像
# 基于 ubuntu:20.04
FROM ubuntu:20.04
#复制该文件夹至镜像
RUN mkdir /APP
ADD . /APP
# 更新软件源为阿里云
RUN cat /APP/config/sources.list > /etc/apt/sources.list \
# 更新软件
&& apt-get -y update \
# 安装依赖
&& apt-get install -y python3-dev python3-pip \
&& apt-get install -y python3-setuptools \
&& apt-get install -y libmysqlclient-dev \
# 安装python依赖
&& pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/ \
&& pip install -r /APP/config/requirements.txt
# 容器添加当前/django到/back
# 安装 python 依赖
# RUN pip install -r requirements.txt
#对外暴露端口
EXPOSE 80 8080 8000 3210
#设置环境变量
# ENV SPIDER=/back
docker image build -t djangoproject:1.0 .
2.编写docker-compose.yml
采用docker-compose的部署方式,traefik会自动申请域名的SSL证书,并监听端口(此处端口就是容器内部端口,映射端口不需要了)。
version: '3'
services:
djangoproject:
image: bithao/djangoproject:1.0
# 挂载后只需修改源文件,容器会同步更新,修改后重启即可
volumes:
- ./django:/APP
deploy:
labels:
traefik.enable: "true"
traefik.http.services.djangoproject.loadbalancer.server.port: 8000
traefik.http.routers.djangoproject-unsecure.rule: Host(`django.bitworkshop.cn`)
traefik.http.routers.djangoproject-unsecure.entrypoints: web
traefik.http.routers.djangoproject.rule: Host(`django.bitworkshop.cn`)
traefik.http.routers.djangoproject.entrypoints: websecure
traefik.http.routers.djangoproject.tls.certresolver: letsencrypt
networks:
- public-db
- http-servers
# 工作目录可以理解为进入容器的第一个目录
working_dir: /APP
restart: always
command: /bin/bash /APP/config/start.sh
# command: [python3, 'manage.py', 'runserver', '0.0.0.0:8000']
networks:
public-db:
external:
name: db-net
http-servers:
external:
name: traefik
docker stack deploy -c docker-compose.yml djangoproject --with-registry-auth
![](https://ywhao.bitworkshop.cn/wp-content/uploads/2022/08/QQ图片20220324161037.jpg)
Comments 1 条评论
顶🔝