docker-compose

安装

参照官方最新文档:https://docs.docker.com/compose/install/

手动安装下载地址: https://github.com/docker/compose/releases

部署服务

docker-compost.yml示例:

version:'1'
services:
	comsume:
		image:tomcat8/jdk8:v8
		ports:
			- '8081:8080'
		volumes:
			- /home/webadmin/consume/ROOT/:/opt/tomcat/webapps/ROOT
	provide:
		image:tomcat8/jdk8:v8
		ports:
			- '8091:8080'
		volumes:
			- /home/webadmin/provide/ROOT/:/opt/tomcat/webapps/ROOT
webapp:
		build: ./dir        #从./dir目录中查找Dockerfile进行构建镜像
		image: webapp:tag   #指定构建镜像的名称和标签
	web-html:
		build:              #构建镜像
			context: ./dir  #构建文件路径
			dockerfile: Dockerfile-name #如果构建文件名不是默认的Dockerfile,需要在这里指定
			args:           #args参数
				buildno: 1

服务控制

docker-compose -f test.yml  up -d		#-f 指定文件,-d后台运行
docker-compose -f test.yml  down		#-f 指定文件

更新服务

如果镜像标签是latest,则可以使用下面这种方法。如果有频繁更新的需求,还可以将如下命令用&&连接起来,写到定时任务中进行定期更新

# 更新所用的镜像,
docker-compose -f test.yml pull

# 更新完镜像后重新部署
docker-compose -f test.yml up -d

如果镜像标签不是latest,则只能手动拉取最新镜像,然后修改.yml中的镜像版本标签,然后再执行

docker-compose -f test.yml up -d

执行命令

version: '2.1'

services:
  server_name:
    container_name: container_name
    image: ''
    restart: always
    volumes:
      - /dtata/ossimport/config:/usr/local/ossimport-2.3.4/conf
      - /dtata/ossimport/python.py:/tmp/python.py
    command: python3 python.py
    # command:
      # - /bin/bash
      # - -c
      # - |
         # tail -f file.log

常用参数

  • restart 重启策略。 注:swarm 集群模式,请改用 restart_policy。

    • no 任何情况下都不重启

    • always 总是重启

    • on-failure 非正常退出后重启

    • unless-stopped 总是重启,除非是正常停止的。

  • stop_grace_period 指定在容器无法处理 SIGTERM (或者任何 stop_signal 的信号),等待多久后发送 SIGKILL 信号关闭容器。默认等待10秒。

不同目录的项目会创建不同的网络

如果在a目录启动了一个Docker Compose项目,然后在b目录启动了另外一个Docker Compose项目,在没有配置相同网络的情况下,这两个项目将会无法互相访问。

为了避免这种情况,可以将项目放在同一目录下或者每个项目的docker-compose.yaml文件中配置相同网络,如下所示:

services:
  web:
    image: nginx

    # 指定网络
    networks:
      - shared_network

# 网络配置
networks:
  shared_network:
    external: true

为了确保这个网络存在,可以先创建该网络,再启动Docker Compose项目。

docker network create shared_network

最后更新于