一.docker-compose作用

Docker Compose是一种用于定义和运行多容器Docker应用程序的工具。通过一个 docker-compose.yml 文件,您可以配置应用程序需要的所有服务(例如:Web服务器、数据库、缓存等)并轻松管理它们。

Docker Compose 使用的三个步骤:

  • 使用 Dockerfile 定义应用程序的环境。
  • 使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
  • 最后,执行 docker-compose up 命令来启动并运行整个应用程序。

二.实践

Docker实践系列,前面三篇文章分别演示了单个容器一键部署&初始化:

nging前端服务器以及前端应用部署//

mysql数据库以及数据自动初始化//

springboot包应用自动部署以及初始化。

通过docker-compose,可以实现多容器编排部署,实现应用环境一键部署完成,适合交付以及生产环境,测试环境快速搭建。本次示例通过对之前示例进行优化,实现多容器一键自动部署以及数据初始化。

前置内容:

需要看过前面三篇,方便快速理解本篇内容。

docker Jar包一键部署:

https://blog.csdn.net/qq_27437073/article/details/154124508?spm=1001.2014.3001.5502

docker nginx web应用一键部署:

https://blog.csdn.net/qq_27437073/article/details/154118083?spm=1001.2014.3001.5502

dockermysql一键部署以及数据自动初始化:

https://blog.csdn.net/qq_27437073/article/details/154074919?spm=1001.2014.3001.5502

文件夹优化

        根据之前文字的示例,将各个运行配置重新按照下图文件夹编排好

        详细目录结构如下: 每个文件夹作用根据实际需要建立,具体作用翻阅之前文章       

docker-compose文件编写

  示例以及每个属性作用见注释:


version: '3.8' #指定Docker Compose文件格式的版本。常用版本为3.8,3.7等。
services:
  wb-mysql:
    image: mysql:5.7 #指定容器运行的镜像名称或镜像 ID。如果镜像在本地不存在,Compose 将会尝试拉取这个镜像。 
    container_name: wb-mysql   #指定自定义容器名称,而不是生成的默认名称。
    ports: #宿主机端口 : 容器端口 (即:HOST:CONTAINER) 的格式,或者仅仅指定容器的端口(宿主机将会随机选择端口)。
      - "3306:3306"
    environment: #添加环境变量。您可以使用数组或字典、任何布尔值,布尔值需要用引号引起来,以确保 YML 解析器不会将其转换为 True 或 False。
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: amequipment
      TZ: Asia/Shanghai
    volumes:
      - ./mysql/data:/var/lib/mysql
      - ./mysql/init-scripts:/docker-entrypoint-initdb.d
      - ./mysql/conf/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf
      - ./mysql/logs:/var/log/mysql
    restart: unless-stopped
  wb-nginx:
    image: nginx:latest
    environment:
      - TZ=Asia/Shanghai
    container_name: wb-nginx
    ports:
      - "8080:80"
      - "8000:81"
    volumes:
      - ./nginx/dist:/usr/share/nginx/html
      - ./nginx/images:/images
      - ./nginx/logs:/var/log/nginx
      - ./nginx/conf.d:/etc/nginx/conf.d
    restart: unless-stopped
  wb-api:
    build:
      context: ./api
      dockerfile: Dockerfile   #指定 Dockerfile 所在文件夹的路径(可以是绝对路径,或者相对 docker-compose.yml 文件的路径)。 Compose 将会利用它自动构建这个镜像,然后使用这个镜像。
    environment:
      - TZ=Asia/Shanghai
    image: wb-api
    container_name: wb-api
    ports:
      - "8081:8081"
    volumes:
      - ./api/logs:/logs
      - ./api/config:/config
      - ./nginx/images:/images
    depends_on:
      - wb-mysql
    restart: unless-stopped  
    
# extra_hosts:
#  - "somehost:162.242.195.82"
# 以上会在此服务的内部容器中 /etc/hosts 创建一个具有 ip 地址和主机名的映射关系:162.242.195.82  somehost 


启动

所有内容准备好后,cmd命令行执行

docker-compose up -d

即可一键初始化所有容器,并自动数据初始化以及配置。

三.注意事项

1.docker-desktop启动的容器,应用访问其他容器,默认ip是:

172.17.0.1+映射后的端口  #根据实际情况修改应用

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐