Docker Compose编排Django/MySQL应用程序
Docker Compose主要用于编排多个服务。
给出一个部署Django框架的示例,示范如何使用Docker Compose建立和运行一个简单的Django/MySQL应用程序。
(1)定义项目组件
项目中需要创建一个Dockerfile文件、一个Python依赖文件和一个名为docker-compose.yml的Compose文件。
① 创建一个空的项目目录。
[root@lh2022 Docker]# pwd
/root/Docker
[root@lh2022 Docker]# mkdir django-mysql && cd django-mysql
[root@lh2022 django-mysql]# pwd
/root/Docker/django-mysql
② 在项目目录下创建并编辑Dockerfile文件
[root@lh2022 django-mysql]# ls
[root@lh2022 django-mysql]# cat > Dockerfile << EOF
# 从Python 3.9父镜像开始
FROM python:3.9
ENV PYTHONUNBUFFERED 1
# 在镜像中添加code目录
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
# 在镜像中安装由requirements.txt文件指定要安装的Python依赖
RUN pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/
COPY . /code/
EOF
[root@lh2022 django-mysql]# ls
Dockerfile
③ 继续在该项目目录下创建并编辑requirements.txt文件。
[root@lh2022 django-mysql]# cat > requirements.txt << EOF
django==4.2
mysqlclient
EOF
[root@lh2022 django-mysql]# ls
Dockerfile requirements.txt
④ 继续在该项目目录下创建并编辑docker-compose.yml文件。
[root@lh2022 django-mysql]# cat > docker-compose.yml << EOF
version: '3'
services:
db:
image: mysql:8
restart: always
ports:
- "3307:3306"
# 修改加密方式
command: --default-authentication-plugin=mysql_native_password --mysqlx=0
volumes:
- ./mysql:/var/lib/mysql
#设置容器环境变量
environment:
- MYSQL_ROOT_PASSWORD=123456
- MYSQL_DATABASE=demodb
web:
restart: always
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
volumes:
db_data:
EOF