docker 配置 Django + mysql + redis

通过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]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值