欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

docker系列教程之docker compose使用

程序员文章站 2022-03-12 09:50:38
...

一、Compose 简介

Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。

Compose 使用的三个步骤:

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

如果多个容器在同一个宿主机中,通过compose来部署应用非常方便,通过能自动解决容器互联问题。

二、compose安装
安装环境linux中
我们可以从 Github 上下载它的二进制包来使用,最新发行的版本地址:https://github.com/docker/compose/releases。

运行以下命令以下载 Docker Compose 的当前稳定版本:

curl -L "https://github.com/docker/compose/releases/download/1.27.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

要安装其他版本的 Compose,请替换 1.27.3。

将可执行权限应用于二进制文件:

chmod +x /usr/local/bin/docker-compose

创建软链:

ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

测试是否安装成功:

docker-compose --version

docker系列教程之docker compose使用

三、创建多个容器
创建一个app目录,目录中有一个docker-comose.yml文件、demo和test目录。
docker系列教程之docker compose使用
docker-comose.yml文件

version: '3'
networks:
    app-network:
services:

 demo: 
   networks:
    - app-network
   build: ./demo
   container_name: demo
   ports:
     - "8099:8099"
 test: 
   networks:
    - app-network
   build: ./test
   container_name: test
   ports:
     - "8085:8085"

image
标明镜像名称或镜像 ID,这个image ID可以是本地也可以是远程的,如果本地不存在,Compose会尝试去pull下来。

build
服务除了可以基于指定的镜像,还可以基于一份 Dockerfile,在使用 up 启动之时执行构建任务,这个构建标签就是 build,它可以指定 Dockerfile 所在文件夹的路径。Compose 将会利用它自动构建这个镜像,然后使用这个镜像启动服务容器。

因此image和build不能共存,如果同时存在会以image参数为主,build参数就会失效。我们这次教程都是通过build文件Dockerfile文件来创建容器

具体参数含义请参考: docker-compose

1.创建第一个容器
在app目录下创建一个demo目录,目录中存放我们提前放好的demo-0.0.1-SNAPSHOT.jar

docker系列教程之docker compose使用
创建Dockerfile文件

FROM java:8
VOLUME /tmp
COPY ./demo-0.0.1-SNAPSHOT.jar /app/
EXPOSE 8099
ENTRYPOINT [ "java", "-jar", "/app/demo-0.0.1-SNAPSHOT.jar" ]


1.创建第二个容器
在app目录下创建一个test目录,目录中存放我们提前放好的test-0.0.1-SNAPSHOT.jar
docker系列教程之docker compose使用
创建Dockerfile文件

FROM java:8
VOLUME /tmp
COPY ./test-0.0.1-SNAPSHOT.jar /app/
EXPOSE 8085
ENTRYPOINT [ "java", "-jar", "/app/test-0.0.1-SNAPSHOT.jar" ]

以上两个应用创建完成后,回到app目录执行docker-compose构建容器

docker-compose up -d

-d代表后台运行
docker系列教程之docker compose使用
查看容器是否启动成功

docker ps -a

docker系列教程之docker compose使用

相关标签: 容器技术 docker