Docker,引用一个不同的容器。 使用php命令调用mysqldump

我有一个使用Docker安装在Symfony3项目上的数据库备份包( https://github.com/dizda/CloudBackupBundle ),但是我无法使它工作,因为它找不到PHP或找不到MySQL

当我运行php app/console --env=prod dizda:backup:start通过执行php app/console --env=prod dizda:backup:start ,运行,或通过cron。 我通过PHP映像得到mysqldump命令未find错误,或者PHP没有从Mysql / db映像中发现错误。

我怎么去运行一个PHP命令,然后运行一个mysqldump命令。

我的docker-compose文件如下:

 version: '2' services: web: # image: nginx:latest build: . restart: always ports: - "80:80" volumes: - .:/usr/share/nginx/html links: - php - db - node volumes_from: - php volumes: - ./logs/nginx/:/var/log/nginx php: # image: php:fpm restart: always build: ./docker_setup/php links: - redis expose: - 9000 volumes: - .:/usr/share/nginx/html db: image: mysql:5.7 volumes: - "/var/lib/mysql" restart: always ports: - 8001:3306 environment: MYSQL_ROOT_PASSWORD: gfxhae671 MYSQL_DATABASE: boxstat_db_live MYSQL_USER: boxstat_live MYSQL_PASSWORD: GfXhAe^7! node: # image: //digitallyseamless/nodejs-bower-grunt:5 build: ./docker_setup/node volumes_from: - php redis: image: redis:latest 

对于docker工人来说,我相当新颖,所以简单的改进,你可以看到感觉自由t标志…我处于试验和错误阶段!

具有代码的图像应具有运行代码所需的所有依赖关系。

在这种情况下,您的代码需要在本地安装mysqldump才能运行。 我会认为这是你的代码的依赖。

将RUN行添加到Dockerfile中可能会有意义,它将安装mysqldump命令,以便您的代码可以使用它。

另一种方法是将数据库备份过程外部化,而不是将其留给应用程序。 你可以有一个在cron上运行的容器,并以这种方式执行mysqldump过程。

我会考虑这两种方法是干净的。