Docker, riferendosi ad un contenitore differnet. Chiama mysqldump utilizzando il command php

Ho un bundle di backup del database ( https://github.com/dizda/CloudBackupBundle ) installato in un progetto Symfony3 utilizzando Docker, ma non posso farlo funzionare perché non trova PHP o non trova MySQL

Quando php app/console --env=prod dizda:backup:start tramite exec, eseguire o via cron. Ottengo il command mysqldump non trovato errore attraverso l'image PHP, o PHP non trovato l'errore dall'image Mysql / db.

Come faccio ad eseguire un command php che quindi esegue un command mysqldump.

Il mio file di compilatore è come segue:

 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 

Sono abbastanza nuovo per fare, quindi i miglioramenti facili potete vedere sentire libero t flag … Sono in fase di prova e errore!

L'image che ha il tuo codice dovrebbe avere tutte le dependencies necessarie per il tuo codice da eseguire.

In questo caso, il codice ha bisogno di mysqldump installato localmente per essere eseguito. Ritengo che questa sia una dipendenza del tuo codice.

Sarebbe opportuno aggiungere una linea RUN al file Dockerfile che installerà il command mysqldump in modo che il codice possa utilizzarlo.

Un altro approccio in generale sarebbe quello di esternalizzare il process di backup del database invece di lasciare che fino alla tua applicazione. Potresti avere un contenitore che funziona su un cron e fa il process mysqldump in questo modo.

Vorrei considerare entrambi gli approcci per essere puliti.