使用 Docker Compose 构建复杂的多容器 App的方法

目录
  • 1 为什么需要 Docker Compose
  • 2 什么是 Docker Compose
  • 3 Docker Compose 的使用
    • 3.1 启动容器
    • 3.2 停止并删除容器

1 为什么需要 Docker Compose

在构建容器过程中,一般需要重复运行一些命令, 如 docker builddocker run 等等,这些命令有时冗长而复杂,逐个重复运行这些命令十分繁琐,对于多容器的复杂应用尤其如此。使用 Docker Compose 工具能极大地简化容器的创建、管理和维护。

2 什么是 Docker Compose

Docker Compose 工具相当于 C/C++ 的 make 工具,使用 make 需要 Makefile,所有的编译链接设置都在Makefile 中指定,不需要为了运行程序而每次都在终端手动输入长串的指令。

Docker Compose 同样也需要一个配置文件: docker-compose.yaml(文件扩展名也可以是 yml).

YAML 是一种人类可读的数据序列化语言,通常用于配置文件和存储或传输数据的应用程序,YAML 使用 python 那样的缩进以指示嵌套关系。缩进通常使用两个空格,但是实际上没有限制,同 python,使用 # 表示注释。

3 Docker Compose 的使用

如下是一个 Mern Stack App 项目结构:

docker-compose.yaml 文件内容如下:

# docker compose 规范的版本,下面的网站可查
# https://docs.docker.com/compose/compose-file/compose-versioning/
version: "3.8"
# 此 mern 将创建3个容器,下面的3个服务
# mongodb, backend, frontend 将自动被翻译成3个容器
services:
  mongodb:
  	# 从 hub.docker.com 获取官方image
    image: "mongo"
	# 命名卷: 持久化保存数据库数据
    volumes:
      - data:/data/db

    # 环境变量,在文件 ./env/mongo.env 里保存
    env_file:
      - ./env/mongo.env
  backend:
    build: ./backend
    ports:
      - "80:80"
    volumes:
      # 命名卷
      - logs:/app/logs
      # 绑定挂载,不同于命令,此文件中可以使用相对路径,
      # 手动运行命令则需绝对路径
      - ./backend:/app
      # 匿名卷
      - /app/node_modules
    env_file:
      - ./env/backend.env
    depends_on:
      - mongodb
  frontend:
    build: ./frontend
    ports:
      - "3000:3000"
    volumes:
      - ./frontend/src:/app/src

	# stdin_open 和 tty 对应手动执行命令时的 -it
    stdin_open: true
    tty: true

    # 仅仅在容器 backend 运行后,才会运行此 frontend
    depends_on:
      - backend
      -
# 这里是整个 App 的命名卷
# 匿名卷和 bind-mounts 不能在这里指定
volumes:
  data:
  logs:

3.1 启动容器

docker-compose up

docker-compose up 默认以附加模式运行,如果需要以分离模式运行则在命令后加 -d:

docker-compose up -d

也因为此原因,docker-compose.yaml 里没有设置 -d 的选项。

3.2 停止并删除容器

docker-compose down
  • 使用 Docker Compose, Dockerfile 文件仍然必不可少。 Docker Compose创建一个默认网络并将所有容器添加到该网络,故 docker-compose.yaml 里不需要指定网络。
  • docker-compose down 将停止并删除容器,因此 docker-compose.yaml 没有选项 --rm

不管是单容器还是多容器,使用 Docker Compose 能极大简化容器的创建、管理和维护,由此可见,Docker Compose 是一个强大的非常有用的工具。

到此这篇关于使用 Docker Compose 构建复杂的多容器 App的文章就介绍到这了,更多相关Docker Compose 多容器内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Docker Compose多容器部署的实现

    一.wordpress部署 这里先以wordpress的部署为例引出Docker Compose,wordpress的部署需要wordpress和mysql的镜像: (一)准备环境 1.拉取wordpress镜像 [root@docker-node1 /]# docker pull wordpress 2.拉取mysql镜像 [root@docker-node1 /]# docker pull mysql 3.镜像列表 [root@docker-node1 /]# docker image ls

  • 详解Docker Compose配置文件参数

    目录 1. image 2. build 3. command 4.container_name 5.depends_on 6.dns 7. tmpfs 8. entrypoint 9.env_file 10. environment 11. expose 12. external_links 13. extra_hosts 14. labels 15. links 16. logging 17. pid 18. ports 19. security_opt 20. stop_signal 21

  • Docker Compose快速部署多容器服务实战的实例详解

    目录 1 什么是Docker Compose 2 安装Docker Compose 3 Docker Compose文件格式的简单介绍 4 Docker Compose常用命令 5 使用Docker Compose一键部署Spring Boot+Redis实战 5.1 构建应用 5.1.1 Spring Boot项目 5.1.2 Redis配置文件 5.2 打包应用并构建目录 5.2.1 打包Spring Boot项目 5.2.2 上传redis.conf配置文件 5.3 编写Dockerfil

  • Docker compose配置文件写法及命令使用示例

    目录 docker-compose配置文件写法 docker-compose的命令 示例 docker-compose配置文件写法 命令 用途 build 本地创建镜像 command 覆盖缺省命令 depends_on 索拉容器 ports 暴露端口 volumes 卷 environment 环境变量 image pull镜像 docker-compose的命令 命令 用途 build [serviceName] 进行组合构建 [单个服务] up [-d] 创建并且启动容器 [后台启动] s

  • 使用 Docker Compose 构建复杂的多容器 App的方法

    目录 1 为什么需要 Docker Compose 2 什么是 Docker Compose 3 Docker Compose 的使用 3.1 启动容器 3.2 停止并删除容器 1 为什么需要 Docker Compose 在构建容器过程中,一般需要重复运行一些命令, 如 docker build ,docker run 等等,这些命令有时冗长而复杂,逐个重复运行这些命令十分繁琐,对于多容器的复杂应用尤其如此.使用 Docker Compose 工具能极大地简化容器的创建.管理和维护. 2 什么

  • Docker Compose构建Jenkins的实现

    目录 创建目标文件夹 创建docker-compose.yml 解锁 Jenkins 插件安装 Jenkins手动安装插件 配置 JDK & Maven 安装动态参数插件 配置 Jenkins 的 GitLab SSH 免密登录 配置 Publish over SSH 持续交付 Maven 项目 发送文件或执行远程命令 Jenkins 创建目标文件夹 $ cd /usr/local $ mkdir docker $ cd docker $ mkdir jenkins $ cd jenkins $

  • Docker为网络bridge模式指定容器ip的方法

    前言 众所周知bridge模式是Docker默认的网络设置,此模式会为每一个容器分配Network Namespace.设置IP等,并将一个主机上的Docker容器连接到一个虚拟网桥上.下面来看看Docker为网络bridge模式指定容器ip的方法. 实现方法 如果只是简单创建一个bridge模式的网络是无法给容器指定ip的 [root@vultrvpn conf.d]# docker network create --driver bridge wordpress_net ad1ff3d972

  • win7环境下Docker快速构建及阿里云容器加速配置详解

    上篇Docker中提到的是MAC系统中的构建,本篇会简单介绍win7中Docker的构建和加速. 下载之前的步骤本文中不再重提,直接去Docker官网中下载win7版本进行安装,安装完成之后系统会多了三个启动包, 1."Kitematic (Alpha)" Docker服务管理器及更新检查器 Kitematic (Alpha)启动后就是上图的界面,用于管理Docker服务和版本更新等工作.纯视图工作端,可以进行对Docker进行服务重启等. 2."Docker Quickst

  • docker overlay实现跨主机的容器互通的方法

    目录 1. docker配置 2. 创建注册中心与网络 3. 启动容器 环境说明 IP 注册中心 192.168.20.5 consule 192.168.20.6 192.168.20.7 1. docker配置 所有的物理机都需要配置,只需要更改相应的网卡名eno3与consul地址 sudo vim /lib/systemd/system/docker.service #ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/contai

  • docker compose自定义网络实现固定容器ip地址

    由于默认的bridge桥接网络,重启容器后会改变ip地址.在一些场景下我们希望固定容器IP地址. docker-compose是docker的一个编排工具,相对于命令模式创建网络,容器等.使用配置文件相对来说更方便,可追溯问题. 直接粘贴docker-compose.yml文件 version: '2' services: nginx: image: nginx:1.13.12 container_name: nginx restart: always tty: true networks: e

  • Docker Compose部署及基础使用详解

    一 Docker Compose概述 Compose是一个用于定义和运行多容器Docker应用程序的工具.使用Compose,您可以使用YAML文件来配置应用程序的服务.然后,使用单个命令,您可以从配置中创建并启动所有服务. Compose适用于所有环境:生产,登台,开发,测试以及CI工作流程. 使用Compose基本上是一个三步过程: 在Dockerfile中定义您的应用程序环境,以便可以在任何地方进行再生产. 定义构成应用程序的服务,docker-compose.yml 以便它们可以在隔离环

  • Docker.v19安装和配置Docker Compose编排工具的方法

    一.Compose简介 Compose是用于定义和运行多容器Docker应用程序的工具.通过Compose,可以使用YAML文件来配置应用程序的服务.然后,使用一个命令,就可以从配置中创建并启动所有服务. Docker-Compose是一个容器编排工具.通过一个.yml或.yaml文件,将所有的容器的部署方法.文件映射.容器端口映射等情况写在一个配置文件里,执行docker-compose up命令就像执行脚本一样,一个一个的安装并部署容器. YAML文件基本语法: 大小写敏感: 使用缩进表示层

  • Docker Compose的安装和使用步骤

    一.Docker Compose是什么? Docker Compose是一个工具,用于定义和运行多容器应用程序的工具: Docker Compose通过yml文件定义多容器的docker应用: Docker Compose通过一条命令根据yml文件的定义去创建或管理多容器: Docker Compose是用来做Docker的多容器控制,是一个用来把Docker自动化的东西.有了Docker Compose你可以把所有繁复的 Docker 操作全都一条命令,自动化的完成(可以简单理解为批处理).

  • IDEA中使用Docker Compose容器编排的实现

    (一)确保idea 中连接到docker (二)打包镜像 我这里测试的是前后分离项目 如果是微服务中呢,由于前文中在pom.xml 中绑定了idea docker 打包插件 在其 父工程中使用 打包命令 即可将其子模块 打成一个个镜像 (三)Compos编排文件编写 docker compose 使用镜像编排 version: '3' #compose 文件版本(1.2.x+ 用3即可) services: #指定服务名 建议还是与项目名一致 虽然其并没有什么实际性联系 lei-server:

随机推荐