使用docker-compose(以前的图)链接一个cron图像

我使用docker-compose(之前的图)像这样在docker中运行一个简单的rails应用程序:

泊坞窗,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 

Dockerfile

 FROM rails:onbuild 

我需要运行一些定期的维护脚本,比如数据库备份,pingsearch引擎的站点地图等。

我不想在我的主机上使用cron,因为我更喜欢保持应用程序的可移植性,我的想法是使用docker-compose来链接一个图像,例如https://registry.hub.docker.com/u/ hamiltont / docker-cron /使用docker撰写。

rails官方镜像没有启用ssh,所以我不能只有cron容器ssh进入web容器并运行脚本。

docker-compose有一个方法让容器获得一个shell到一个链接容器来执行一些命令吗?

你真的想用你的容器做什么? 如果您需要从容器的文件系统访问某些对象,则只需将该卷挂载到辅助容器(考虑--volumes-from选项)。

在容器之间的任何SSH交互都被认为是一种不好的做法(至less在docker exec被执行的时候是docker exec 1.3)。 在容器中运行多个进程(例如,smth,但在你的情况下的postgresrails )会导致很大的开销:为了使用sshdrails你必须部署像supervisord这样的东西。

但是如果你真的需要在容器之间提供某种非标准的交互,并且确定你真的需要它,我build议你使用一个全function的docker客户端库(如docker-py )。 它将允许您以可编程的方式启动docker exec

Interesting Posts