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过程。
我会考虑这两种方法是干净的。
- docker-compose创buildroot所拥有的文件
- Docker – 使用GELF日志驱动程序logging到Graylog2容器引发错误
- 无法连接到运行在计算引擎上的docker容器上的mongodb
- 在一个依赖于mysql容器的python容器中运行alembic
- 无法连接到在docker-machine上运行的mongodb实例
- Docker,PHP和Python
- 在AWS上重新启动Docker群中的计算机
- 禁用swarmpipe理器重新创build新的容器
- 在Windows上运行docker镜像的结果是“oci runtime error:exec:”bash“:可执行文件在$ PATH中找不到。