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

kx5bkwkv  于 2023-03-11  发布在  PHP
关注(0)|答案(2)|浏览(162)

我已经使用Docker在Symfony 3项目上安装了一个数据库备份包(https://github.com/dizda/CloudBackupBundle),但是由于找不到PHP或MySQL,我无法使其工作
当我通过exec、run或cron运行php app/console --env=prod dizda:backup:start时,我通过PHP映像得到mysqldump命令未找到错误,或者从Mysql/db映像得到PHP未找到错误。
我如何开始运行一个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旗...我在尝试和错误的阶段!

8yparm6h

8yparm6h1#

包含代码的映像应该具有代码运行所需的所有依赖项。
在这种情况下,您的代码需要本地安装mysqldump才能运行。我认为这是您代码的依赖项。
在您的Dockerfile中添加一个RUN行可能是有意义的,它将安装mysqldump命令,以便您的代码可以使用它。
另一种方法是将数据库备份过程外部化,而不是将其留给应用程序,您可以让某个容器在cron上运行,并以这种方式执行mysqldump过程。
我认为这两种方法都是干净的。

lsmepo6l

lsmepo6l2#

您可以通过Dockerfile在PHP容器中安装MySQL客户端,如下所示:
停靠文件:

...
# install default-mysql-client
RUN apt-get update && apt-get install -y default-mysql-client && rm -rf /var/lib/apt
...

然后,使用以下命令(在控制器中)生成备份:

mysql -u root --password=DB_PASSWORD -h mysql /usr/bin/mysqldump your-mysql-container-name > storage/app/backups/backup_filename.sql;

希望这能对某人有所帮助!

相关问题