compose是编排的意思,docker-compose命令可以一次性启动多个容器,在要启动的容器数量较多时,比较省事,且也可以很方便地在一个文件中管理多个容器的启动命令。默认是打不出docker-compose命令的,需要在宿主机安装docker的命令补全工具bash-completion。

docker-compose --help查看docker-compose命令用法

docker-compose -f path/docker-compose.yml up/down

如果没有用-f参数指定docker-compose.yml文件路径,则默认会用当前目录中的docker-compose.yml文件,如果当前目录中没有docker-compose.yml文件,则会报错。

docker-compose.yml内容示例:

version: '3'
services:
  Server1:
    image: tars_cpp_env:latest
    ports:
     - "10101:10101"
    volumes:
     - "/data/apps/patient_profile_proj:/app"
     - "/data/app_log:/data/app_log"
    command: /bin/bash -c "/app/Server1/tools/start.sh"
    restart: always
    healthcheck:
      test: ["CMD-SHELL", "if [ $$(netstat -apn | grep 10101 | awk '{print $$4}' | grep -E '127.0.0.1|0.0.0.0' | wc -l) -gt 0 ]; then exit 0; else exit 1; fi"]
      interval: 60s
      timeout: 5s
      retries: 3
    network_mode: "host"
  Server2:
    image: tars_cpp_env:latest
    ports:
     - "10100:10100"
    volumes:
     - "/data/apps/patient_profile_proj:/app"
     - "/data/app_log:/data/app_log"
    command: /bin/bash -c "/app/Server2/tools/start.sh"
    restart: always
    healthcheck:
      test: ["CMD-SHELL", "if [ $$(netstat -apn | grep 10100 | awk '{print $$4}' | grep -E '127.0.0.1|0.0.0.0' | wc -l) -gt 0 ]; then exit 0; else exit 1; fi"]
      interval: 60s
      timeout: 5s
      retries: 3
    network_mode: "host"

1、version:值必须是'3'。

2、services:指定要启动哪些服务。

3、Server1,这里是具体的服务名,给每个服务取一个易懂易区分的名字即可。服务名不等同于容器名。如果不用container_name显式指定容器名的话,则容器名会采用默认的格式,即${项目名称}_${服务名称}_${序号}。

4、image:指定使用哪个镜像。

5、container_name:指定容器名,最好自定义容器名。

6、ports:指定端口映射。如果要建多个映射关系,则ports下面要有多行,每一行指定一个端口映射。

7、volumes:指定目录映射。如果要建多个映射关系,则volumes下面要有多行,每一行指定一个目录映射。

8、command:覆盖容器启动后默认执行的命令。注意,如果要指定shell脚本的话,shell脚本的路径是在容器中的路径,而不是在宿主机中的路径。

9、network-mode:网络模式,默认是bridge。

10、depends_on:指定依赖的服务,依赖的服务先启动后,才会启动本服务,如可能依赖一些数据存储服务,如数据库、redis等。

11、environment:设置环境变量。如果有多个环境变量,则environment下面要有多行,每一行指定一个键值对。

12、restart:重启策略,一般设为restart,这样当宿主机重启或者docker服务重启时,容器也会自动重启。

13、healthcheck:健康检查策略。

要是还用到其他功能,再搜索使用即可。

申*数据上报服务docker-compose.yaml内容如下

version: '3'
services:
  ShenkangUploadServer:
    image: tars_node_env:latest
    container_name: shenkang_upload_server_1
    tty: true
    volumes:
      - "/data/apps/shenkang_upload_server:/app"
    command: /bin/bash -c "/app/cmd.sh"
    restart: always
    network_mode: "host"
    environment:
      CONFIG_FILE: /app/10001_config.json

 

相关文章: