使用 docker-compose(以前称为 fig)到 link 一个 cron 映像
Using docker-compose (formerly fig) to link a cron image
我正在 运行 使用 docker-compose(以前称为 fig)在 docker 中创建一个简单的 rails 应用程序,如下所示:
docker-compose.yml
db:
image: postgres
volumes:
- pgdata:/var/lib/postgresql/data
web:
build: .
command: bundle exec rails s -b 0.0.0.0
volumes:
- .:/usr/src/app
ports:
- "3011:3000"
links:
- db
Docker 文件
FROM rails:onbuild
我需要运行一些定期的维护脚本,例如数据库备份、向搜索引擎发送 ping 站点地图等
我不想在我的主机上使用 cron,因为我更喜欢保持应用程序的便携性,我的想法是使用 docker-compose 到 link 图像,例如 https://registry.hub.docker.com/u/hamiltont/docker-cron/ 使用 docker-compose.
rails 官方镜像没有启用 ssh,所以我不能只让 cron 容器通过 ssh 进入 web 容器和 运行 脚本。
docker-compose 是否有办法让容器获得 shell 到 linked 容器中以执行一些命令?
您实际上想用您的容器做什么?如果您需要从容器的文件系统访问某些对象,您应该将卷挂载到辅助容器(考虑 --volumes-from
选项)。
容器之间的任何 SSH 交互都被认为是一种不好的做法(至少从 docker 1.3 开始,当 docker exec
已经实现时)。 运行 容器内有多个进程(例如 smth 但 postgres
或 rails
在您的情况下)将导致大量开销:为了有一个 sshd
对于 rails
,您必须部署类似 supervisord
的东西。
但是,如果您确实需要在容器之间提供某种非标准交互,并且您确定确实需要它,我建议您使用功能齐全的 docker 客户端库之一(比如 docker-py
)。它将允许您以可编程的方式启动 docker exec
。
我正在 运行 使用 docker-compose(以前称为 fig)在 docker 中创建一个简单的 rails 应用程序,如下所示:
docker-compose.yml
db:
image: postgres
volumes:
- pgdata:/var/lib/postgresql/data
web:
build: .
command: bundle exec rails s -b 0.0.0.0
volumes:
- .:/usr/src/app
ports:
- "3011:3000"
links:
- db
Docker 文件
FROM rails:onbuild
我需要运行一些定期的维护脚本,例如数据库备份、向搜索引擎发送 ping 站点地图等
我不想在我的主机上使用 cron,因为我更喜欢保持应用程序的便携性,我的想法是使用 docker-compose 到 link 图像,例如 https://registry.hub.docker.com/u/hamiltont/docker-cron/ 使用 docker-compose.
rails 官方镜像没有启用 ssh,所以我不能只让 cron 容器通过 ssh 进入 web 容器和 运行 脚本。
docker-compose 是否有办法让容器获得 shell 到 linked 容器中以执行一些命令?
您实际上想用您的容器做什么?如果您需要从容器的文件系统访问某些对象,您应该将卷挂载到辅助容器(考虑 --volumes-from
选项)。
容器之间的任何 SSH 交互都被认为是一种不好的做法(至少从 docker 1.3 开始,当 docker exec
已经实现时)。 运行 容器内有多个进程(例如 smth 但 postgres
或 rails
在您的情况下)将导致大量开销:为了有一个 sshd
对于 rails
,您必须部署类似 supervisord
的东西。
但是,如果您确实需要在容器之间提供某种非标准交互,并且您确定确实需要它,我建议您使用功能齐全的 docker 客户端库之一(比如 docker-py
)。它将允许您以可编程的方式启动 docker exec
。