Docker Compose笔记

By | 2021年12月31日

1 docker-compose 介绍

docker-compose默认的模板文件是 docker-compose.yml
在部署时, 通常将 docker-compose.yml 文件放到一个目录, 表示一个应用, docker 会为这个应用创建一个独立的网络, 便于和其它应用进行隔离。要运行这个程序, 只要在这个目录下执行 docker-compose up命令。要停止上面的容器, 只需要输入docker-compose down命令。

2 docker-compose 安装

下载地址:https://github.com/docker/compose/releases
这里我直接拷贝文章上的了:

sudo chown -R admin:admin /usr/local/bin/
curl -L https://github.com/docker/compose/releases/download/1.23.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

安装好后,执行 docker-compose --version。如果 docker-compose 命令失败,请检查路径。还可以创建到/usr/bin或路径中任何其他目录的符号链接。例如:sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

注意:
docker-compose up启动的 compose文件,不能使用deploy配置,这个配置只能在swarm模式下使用。
经测试,docker-compose 中可以使用 driver: overlay,但不能在 service上去设置 network。
compose不使用swarm模式将服务部署到群中的多个节点。所有容器都将在当前节点上调度。

下载好后,安装地址:https://docs.docker.com/compose/install/

3 使用多个 compose 文件

默认情况下,compose读取两个文件:docker-compose.yml和可选的docker-compose.override.yml文件。按照惯例,docker-compose.yml包含基本配置,override文件,可以包含现有服务或全新服务的配置覆盖。

要使用多个override文件或一个具有不同名称的override文件,可以使用 -f 选项指定文件列表。按命令行中指定的顺序组合合并文件。例如:

docker-compose.yml

web:
  image: example/my_web_app:latest
  links:
    - db
    - cache

db:
  image: postgres:latest

cache:
  image: redis:latest

docker-compose.override.yml

web:
  build: .
  volumes:
    - '.:/code'
  ports:
    - 8883:80
  environment:
    DEBUG: 'true'

db:
  command: '-d'
  ports:
    - 5432:5432

cache:
  ports:
    - 6379:6379

开发环境可以这样使用:docker-compose up,这会自动覆盖合并到 docker-compose.yml。

docker-compose.prod.yml

web:
  ports:
    - 80:80
  environment:
    PRODUCTION: 'true'

cache:
  environment:
    TTL: '500'

生产环境可以这样使用:docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d

4 docker-compose 常用命令

# 启动默认的 docker-compose.yml
docker-compose up                  # 创建并启动容器
docker-compose up falkafka         # 创建并启动falkafka容器,由于falkafka依赖于falzookeeper容器,因此falzookeeper容器也会一并起来
docker-compose down                # 停止并删除 containers, networks, images, and volumes
docker-compose ps                  # 列出容器
docker-compose logs -f falkafka    # 查看 falkafka 服务的日志
docker-compose images              # 列出镜像

# 启动指定的 kafka-compose.yml
docker-compose -f kafka-compose.yml up
docker-compose -f kafka-compose.yml up falkafka
docker-compose -f kafka-compose.yml down
docker-compose -f kafka-compose.yml ps 
docker-compose -f kafka-compose.yml logs -f falkafka
docker-compose -f kafka-compose.yml images

# 
docker-compose -f docker-compose.yml -f docker-compose-elasticsearch.yml up

注:docker-compose命令需要cd到项目目录(即docker-compose.yml所在目录)去执行,否则不起作用!如果你的项目目录为”faldocker”,那么volumns映射出来的目录格式如:”faldocker_kafka”,即会加个前缀faldocker。

如果需要后台运行,请在命令最后加 -d

5 kafka-compose.yml

version: '3.6'

services:
  falzookeeper:
    image: 192.168.1.166:8083/zookeeper-falsec
    volumes:
      - "zoodata:/data"
      - "zoodatalog:/datalog"
      - "zoologs:/logs"
    ports:
      - "2181:2181"
    networks:
      - falnet

  falkafka:
    image: 192.168.1.166:8083/kafka-falsec
    volumes:
      - "kafka:/kafka"
      - "kafka-conf:/opt/kafka/config"
    depends_on:
      - falzookeeper
    ports:
      - "9092:9092"
    networks:
      - falnet

  falkafkamanager:
    image: hlebalbau/kafka-manager:latest
    depends_on:
      - falzookeeper
    ports:
      - "9000:9000"
    environment:
      ZK_HOSTS: "falzookeeper:2181"
      APPLICATION_SECRET: "random-secret"
    command: -Dpidfile.path=/dev/null
    networks:
      - falnet

volumes:
  zoodata:
  zoodatalog:
  zoologs:
  kafka:
  kafka-conf:

networks:
  falnet:
    driver: overlay
    attachable: true

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注