$ sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
$ docker-compose --version
$ docker network prune
$ docker volume prune
# 指定版本信息
version: '3'
# 指定服务(启动容器)
services:
# 服务名:项目根目录小写_指定的服务名_服务个数的序号
# deploydjango_db_1
db:
# 指定镜像的名称
image: mariadb
# 覆盖默认的CMO,指定运行容器时(docker run)需要运行的命令或者参数
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
volumes:
- mysql_db:/var/lib/mysql
# 指定容器重启的策略
restart: always
# 指定环境变量
environment:
MYSQL_ROOT_PASSWORD: pythonvip
MYSQL_DATABASE: test
django_app:
# 指定容器的启动依赖
# 只有当db容器启动后,再启动 django_app容器
depends_on:
- db
# 指定Dockerfile所在的路径
build: ./django_app_docker
# 指定构建的镜像名
image: keyou1/django_app
restart: always
volumes:
- logs:/usr/src/app/logs
- django_code:/usr/src/app/LearnDjango/
web:
depends_on:
- django_app
build: ./nginx_docker
image: keyou1/lemon-test-nginx
restart: always
# 端口映射
ports:
- "8866:80"
- "8000:8000"
volumes:
- logs:/var/log/nginx/
# 指定容器使用的数据卷
volumes:
# deploydjango_mysql_db
# 数据卷名为:项目根目录小写_指定的数据卷名
mysql_db:
django_code:
logs:
在docker-compose.yml文件所在路径下
$ docker-compose up
以之前完成的 ApiTest
项目为例:
在 setting.py
文件中
# 收集静态文件
# 1. 在项目根路径下创建xx文件夹
# 2. 执行收集命令 python manage.py collectstatic
STATIC_ROOT = os.path.join(BASE_DIR, 'front_ends/static')
lemon-test/package.json
打包结果:
将两者合并
$ $ docker build ./ -t apitest:last
# 登录docker hub
$ docker login
$ docker tag apitest:last zhongxin1111/apitest
$ docker push zhongxin1111/apitest
docker-compose.yml
$ docker-compose up -d
# 指定版本信息
version: '3'
# 指定服务(启动容器)
services:
# 服务名:项目根目录小写_指定的服务名_服务个数的序号
# deploydjango_db_1
db:
# 指定镜像的名称
image: mariadb
# 覆盖默认的CMO,指定运行容器时(docker run)需要运行的命令或者参数
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
volumes:
- mysql_db:/var/lib/mysql
# 指定容器重启的策略
restart: always
# 指定环境变量
environment:
MYSQL_ROOT_PASSWORD: pythonvip
MYSQL_DATABASE: test
django_app:
# 指定容器的启动依赖
# 只有当db容器启动后,再启动 django_app容器
depends_on:
- db
# 指定Dockerfile所在的路径
build: ./django_app_docker
# 指定构建的镜像名
image: zhongxin1111/apitest
restart: always
volumes:
- logs:/usr/src/app/logs
- django_code:/usr/src/app/LearnDjango/
web:
depends_on:
- django_app
build: ./nginx_docker
image: keyou1/lemon-test-nginx
restart: always
# 端口映射
ports:
- "8866:80"
- "8000:8000"
volumes:
- logs:/var/log/nginx/
# 指定容器使用的数据卷
volumes:
# deploydjango_mysql_db
# 数据卷名为:项目根目录小写_指定的数据卷名
mysql_db:
django_code:
logs:
具体代码见:
https://github.com/zx490336534/ApiTest/tree/master/DeployApiTest
由于没有环境,所以不再深入
见:https://docs.docker.com/swarm/