docker-compose 用来做多docker容器管理。

docker-compose 需要注意的

我根据我自己的体验,给出几点需要注意的

  1. 不要把 docker 当做数据容器来使用,数据一定要用 volumes 放在容器外面
  2. 不要把 docker-compose 文件暴露给别人, 因为上面有你的服务器信息
  3. 多用 docker-compose 的命令去操作, 不要用 docker 手动命令&docker-compose 去同时操作
  4. 写一个脚本类的东西,自动备份docker 映射出来的数据。
  5. 不要把所有服务都放在一个 docker 容器里面

docker-compose.yaml

docker-compose 自己内部有一套网络,会把 service name 转换为对应的 ip

修改项目名称

Compose使用项目目录的基名称作为默认项目名称。传递-p命令行选项(或设置COMPOSE_PROJECT_NAME环境变量)以手动设置项目名称。

保留卷数据

Compose为您的所有服务保留所有卷(因此也保留您的数据)。当Docker编写运行时,它会从以前的运行中查找容器,并将其卷复制到新的容器中,使您能够从中断的位置提取。

变量和合并

您可以在组合中使用变量自定义环境或用户。您甚至可以从其他合成文件扩展合成。

变量替换

Compose使用运行docker Compose的shell环境中的变量值。假设您在shell环境中设置EXTERNAL_PORT=8000,然后运行以下配置:

  1. web:
  2. build:
  3. ports:
  4. - "${EXTERNAL_PORT}:5000"

Compose将查找shell的外部端口环境变量并替换其值。然后,Compose将在创建web容器之前将端口映射解析为“8000:5000”。您可以在作文中使用#VARIABLE或${VARIABLE}语法。但是,您不能使用诸如${VARIABLE-default}或${VARIABLE/foo/bar}之类的“扩展shell”样式功能。如果需要文字美元符号,可以使用$$;也可以使用此语法防止Compose处理环境变量:

  1. web:
  2. build: .
  3. command: "$$COMPOSE_DOES_NOT_PROCESS_THIS_VARIABLE"

更新容器

方式一:

  1. docker-compose up --force-recreate --build
  2. docker image prune -f

方式二:

  1. docker-compose pull
  2. docker-compose restart

docker-compose up/run/start启动容器的区别

参考

官方docker-compose文档
runnable docker教程
Docker Compose 网络设置
关于docker-compose内连接数据库的疑问
如何使用docker-compose将Docker容器相互连接时处理IP地址?