docker-compose 用来做多docker容器管理。
docker-compose 需要注意的
我根据我自己的体验,给出几点需要注意的
- 不要把 docker 当做数据容器来使用,数据一定要用 volumes 放在容器外面
- 不要把 docker-compose 文件暴露给别人, 因为上面有你的服务器信息
- 多用 docker-compose 的命令去操作, 不要用 docker 手动命令&docker-compose 去同时操作
- 写一个脚本类的东西,自动备份docker 映射出来的数据。
- 不要把所有服务都放在一个 docker 容器里面
docker-compose.yaml
docker-compose 自己内部有一套网络,会把 service name 转换为对应的 ip
修改项目名称
Compose使用项目目录的基名称作为默认项目名称。传递-p命令行选项(或设置COMPOSE_PROJECT_NAME环境变量)以手动设置项目名称。
保留卷数据
Compose为您的所有服务保留所有卷(因此也保留您的数据)。当Docker编写运行时,它会从以前的运行中查找容器,并将其卷复制到新的容器中,使您能够从中断的位置提取。
变量和合并
您可以在组合中使用变量自定义环境或用户。您甚至可以从其他合成文件扩展合成。
变量替换
Compose使用运行docker Compose的shell环境中的变量值。假设您在shell环境中设置EXTERNAL_PORT=8000,然后运行以下配置:
web:
build:
ports:
- "${EXTERNAL_PORT}:5000"
Compose将查找shell的外部端口环境变量并替换其值。然后,Compose将在创建web容器之前将端口映射解析为“8000:5000”。您可以在作文中使用#VARIABLE或${VARIABLE}语法。但是,您不能使用诸如${VARIABLE-default}或${VARIABLE/foo/bar}之类的“扩展shell”样式功能。如果需要文字美元符号,可以使用$$;也可以使用此语法防止Compose处理环境变量:
web:
build: .
command: "$$COMPOSE_DOES_NOT_PROCESS_THIS_VARIABLE"
更新容器
方式一:
docker-compose up --force-recreate --build
docker image prune -f
方式二:
docker-compose pull
docker-compose restart
docker-compose up/run/start启动容器的区别
参考
官方docker-compose文档
runnable docker教程
Docker Compose 网络设置
关于docker-compose内连接数据库的疑问
如何使用docker-compose将Docker容器相互连接时处理IP地址?