通过docker-compose实现django+mysql
docker-compose.yml(mysql环境变量要与django settings.py配置相同)
# Use root/example as user/password credentials
version : "3.8"
services:
web:
# 设置自动重启
restart: always
build:
context: .
dockerfile: Dockerfile
# 指定镜像名字
image : web
# 容器名字
container_name: web
# 设置主机名
hostname: web
# 设置自动重启
restart: always
# 运行 manage.py 命令
command: bash -c "python manage.py runserver 0.0.0.0:8080" #python manage.py makemigrations && python manage.py migrate && python manage.py collectstatic --noinput &&
#volumes:
# - ./:/web
# cache_mode:"none"
# 绑定挂载宿主机的./目录到容器的/web目录
volumes:
- type: bind
source: ./
target: /web
# 映射宿主机8080端口到容器的8080端口
ports :
- "8080:8080"
networks:
- web
depends_on:
- mysql
- redis
mysql:
# 选择mysql镜像
image: mysql:8.0.32
# NOTE: use of "mysql_native_password" is not recommended: https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html#upgrade-caching-sha2-password
# (this is just an example, not intended to be a production configuration)
# 设置容器的名字
container_name: mysql
#hostname: mysql
networks:
- web
# 设置自动重启
restart: always
# 设置mysql_native_password作为认证
command: --default-authentication-plugin=mysql_native_password --mysqlx=0
# 映射宿主机3306端口到容器的3306端口
ports:
- 3306:3306
# 挂载宿主机的db目录到容器的/var/lib/mysql目录
volumes:
- ./db:/var/lib/mysql
# 指定环境变量
environment:
- MYSQL_HOST=localhost
- MYSQL_PORT=3306
- MYSQL_DATABASE=test
- MYSQL_USER=root
- MYSQL_PASSWORD=970209
- MYSQL_ROOT_PASSWORD=970209
redis:
# 选择redis镜像
image: redis:7.0
# 设置容器的名字
container_name: redis
# 映射宿主机6379端口到容器的6379端口
ports:
- "6379:6379"
networks:
- web
# 挂载宿主机的/root/redis/data目录到容器的/data目录
volumes:
- /root/redis/data:/data
# 运行 redis-server 命令
command: redis-server
networks:
# 设置网络,将3个容器放在同一个网络中
web:
Dockerfile 文件
# 从仓库拉取镜像文件
FROM python:3.9
# 设置 python 环境变量
ENV PYTHONUNBUFFERED 1
# 设置pip源为国内源
COPY pip.conf /root/.pip/pip.conf
# 在容器内创建code文件夹
RUN mkdir -p /code
# 设置容器内工作目录
WORKDIR /code
# 将当前目录文件加入到容器工作目录中(. 表示当前宿主机目录)
ADD . /code
# pip安装依赖
RUN pip install -r requirements.txt
RUN pip install pip -U && pip install -r requirements.txt
requirements.txt
Django==4.1.7
mysqlclient==2.1.1
redis
pip.config
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host=mirrors.aliyun.com
启动命令:docker-compose up
docker-compose.yml目录启动 Windows PowerShell
PS D:\Py_Project\django\jango_Demo> docker-compose up
在后台运行只需要加一个 -d 参数docker-compose up -d
指定文件名: docker-compose -f aaa.yml up
查看运行状态:docker-compose ps
停止运行:docker-compose stop
重启:docker-compose restart
重启单个服务:docker-compose restart service-name
进入容器命令行:docker-compose exec service-name sh
查看容器运行log:docker-compose logs [service-name]