我使用Docker在Symfony3项目上安装了一个数据库备份包(https://github.com/dizda/CloudBackupBundle),但由于它找不到PHP或没找到MySQL,我无法使用它
当我通过exec运行php app/console --env=prod dizda:backup:start
,运行或通过cron运行时。我通过PHP映像获取mysqldump命令未找到错误,或者从Mysql / db映像中找不到PHP错误。
如何运行运行mysqldump命令的php命令。
我的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
我对码头工作者来说很陌生,所以你可以看到很容易的改进,感觉自由了......我正处于试错阶段!
答案 0 :(得分:3)
包含代码的图像应具有代码运行所需的所有依赖项。
在这种情况下,您的代码需要在本地安装mysqldump才能运行。我认为这是你的代码的依赖。
向Dockerfile添加一条RUN行可能会有意义,它会安装mysqldump命令,以便你的代码可以使用它。
另一种方法是外部化数据库备份过程,而不是将其留给您的应用程序。你可以拥有一个在cron上运行的容器,并以这种方式处理mysqldump进程。
我会认为这两种方法都很干净。