Docker Compose部署项目flask+mysql + redis

什么是DockerCompose

Docker Compose通过一个单独的docker-compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器,帮助我们实现多个相互关联的Docker容器的快速部署。


我们以flask+mysql + redis项目为例
项目目录结构如下:

- flask_project/
  - app/
    - other_files/
  - docker-compose.yml
  - Dockerfile
  - requirements.txt
  - run.py

使用docker Compose部署项目主要分为以下四个步骤:
 

1、写Dockerfile 文件 用于构建自定义flask镜像

# 基于 Python 3.8 Alpine 镜像构建
FROM python:3.8-alpine

# 设置时区环境变量
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

# 设置工作目录
WORKDIR /app

# 将当前目录下的所有文件复制到工作目录中
COPY . /app

# 安装 Python 依赖
RUN pip install -r requirements.txt 

# 暴露容器端口 10020 供宿主机与容器连接使用
EXPOSE 10020

# 运行应用程序
CMD ["python", "run.py"]

2、写docker-compose.yml文件

        用于创建flask容器实例 mysql容器实例 redis容器实例

        配置虚拟网络 关联多个容器

version: '3.8'

services:
  flaskapp:
    image: testdashboards-flaskapp:latest       # 表示拉取镜像(如果之前已经构建了镜像的话)没有镜像就执行下一行的build构建镜像
    build: .                                    # 表示构建镜像 . 表示当前路径下的文件 默认文件名为 Dockerfile
    container_name: test_app                    # 定义容器名称
    ports:
      - "10020:10020"                           # Flask 端口映射
    environment:
      - DATABASE_URL="mysql:192.168.137.128//root:111111@test_mysql/test_db"
    depends_on:                                 # 表示依赖于这两个服务 在启动flaskqpp服务时会先启动mysql redis
      - mysql
      - redis
    networks:
      test_net:
        ipv4_address: 192.168.137.130           # Flask 应用指定 IP 地址
    restart: always

  mysql:
    image: mysql:5.7                             # 表示从镜像仓库拉取mysql5.7的镜像
    container_name: test_mysql                   # 定义容器名称
    environment:
      MYSQL_ROOT_PASSWORD: "111111"
      MYSQL_DATABASE: test_db
      MYSQL_USER: root
      MYSQL_PASSWORD: "111111"
      MYSQL_CHARACTER_SET_SERVER: utf8mb4
      MYSQL_COLLATION_SERVER: utf8mb4_general_ci
    volumes:
      - ~/test_docker/mysql-data:/var/lib/mysql    # 挂载数据卷
    networks:
      test_net:                                    # 添加该服务到名为test_net 的网络中  
        ipv4_address: 192.168.137.128              # MySQL容器 指定 IP 地址
    ports:
      - "10021:3306"                               # 端口映射
    restart: always

  redis:
    image: redis:latest
    container_name: test_redis
    ports:
      - "10022:6379"
    volumes:
      - ~/test_docker/redis-data:/data
    networks:
      test_net:
        ipv4_address: 192.168.137.129
    restart: always



networks:                                       # 创建一个自定义的虚拟网络
  test_net:
    driver: bridge
    ipam:
      config:
        - subnet: 192.168.137.0/24

3、将flask_project文件复制到linux对应目录下

4、进入flask_project目录 执行docker-compose up -d

        根据docker-compose.yml文件 创建镜像、拉取镜像、创建容器、启动容器

        启动 Docker Compose 中定义的容器

        -d表示后台运行

至此 容器创建并运行成功

相关推荐

  1. flask项目部署

    2024-05-02 18:38:02       40 阅读
  2. CentOS部署python Flask项目

    2024-05-02 18:38:02       61 阅读
  3. nginx+ gunicorn部署flask项目

    2024-05-02 18:38:02       47 阅读
  4. DockerCompose

    2024-05-02 18:38:02       62 阅读
  5. Docker Compose部署项目flask+mysql + redis

    2024-05-02 18:38:02       32 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-02 18:38:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-02 18:38:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-05-02 18:38:02       87 阅读
  4. Python语言-面向对象

    2024-05-02 18:38:02       96 阅读

热门阅读

  1. 爬虫学习--2.urllib 库

    2024-05-02 18:38:02       27 阅读
  2. 《21天学通C++》(第十三章) 类型转换运算符

    2024-05-02 18:38:02       29 阅读
  3. MyBatis:mybatis入门

    2024-05-02 18:38:02       28 阅读
  4. MySQL:多表查询和事务

    2024-05-02 18:38:02       36 阅读
  5. 程序员副业可用的四大原则

    2024-05-02 18:38:02       30 阅读
  6. Circuits--Sequential--Finite5

    2024-05-02 18:38:02       32 阅读
  7. BKPUNIX

    2024-05-02 18:38:02       30 阅读
  8. 单片机与Python串口通讯

    2024-05-02 18:38:02       31 阅读
  9. Python Json数据解析

    2024-05-02 18:38:02       32 阅读
  10. 单机多GPU的训练及debug中vscode下launch.json内容设置

    2024-05-02 18:38:02       33 阅读