docker-compose部署
一个项目肯定包含多个容器,每个容器都手动单独部署肯定费时费力。docker-compose可以通过脚本来批量构建镜
像和启动容器,快速的部署项目。
使用docker-compose部署主要是编写 docker-compose.yml 脚本。
项目结构
不论是 Dockerfile 还是 docker-compose.yml 脚本的编写都依赖上下文,所以需要明确部署文件夹的项目结构。
假设当前项目部署文件夹名为 auto ,那么它的结构如下:
- auto/
- django_app/
- 其他项目文件和文件夹
- Dockerfile
- entrypoint.sh
- nginx/
- Dockerfile
- static
- dist
- default.conf
- docker-compose.yml
两个文件夹从之前的文件夹冲拷贝。
现在就缺少decker-compose.yml文件
version: '3'
services:
mariadb_v1:
image: mariadb:latest
restart: always
environment:
MARIADB_ROOT_PASSWORD: ****
MARIADB_DATABASE: django_app
ports:
- "3308:3306"
volumes:
- mariadb_v1:/var/lib/mysql
redis_v1:
image: redis:alpine
restart: always
ports:
- "6377:6379"
django_app:
depends_on:
- redis_v1
- mariadb_v1
# 要与文件夹名称一致
build: ./django_app
environment:
ENV: production
image: auto_django_app
restart: always
volumes:
- app_logs:/app/logs
nginx:
depends_on:
- django_app
build: ./nginx
image: auto_nginx
restart: always
ports:
- "9290:80"
- "9291:81"
volumes:
- nginx_logs:/var/log
volumes:
mariadb_v1:
app_logs:
nginx_logs:
把nginx中的default.conf文件进行修改
修改为auto下的代码环境的根目录名字,与compose里面的配置一一对应
修改代码部分,生产环境数据库配置:
与compose里面的配置一一对应
然后在 auto 目录下运行命令 docker-compose -p auto_v1 up -d --build ,即可自动部署项目。
docker-compose -p auto_v1 up -d --build
报错:docker-compose.yml文件不能用tab键,记得用空格
注意:代码里面的数据库连接,我写数据库的容器名就会报错,连接不上,写服务器ip就行,按理说写数据库的容器名不会报错的。
最后,一键部署shell脚本
在这里插入代码片