J'essaie de dockeriser une application PHP. Dans le fichier de docker, je télécharge l'archive, je l'extrais, etc.
Tout fonctionne bien. Cependant, si une nouvelle version est publiée et que je mets à jour le fichier docker, je dois réinstaller l'application, car le fichier config.php est écrasé.
J'ai donc pensé que je pouvais monter le fichier comme un volume, comme je le fais avec la base de données.
Je l'ai essayé de deux façons, avec un volume et un chemin direct.
docker-compose :
version: '2'
services:
app:
build: src
ports:
- "8080:80"
depends_on:
- mysql
volumes:
- app-conf:/var/www/html/upload
- app-conf:/var/www/html/config.php
environment:
DB_TYPE: mysql
DB_MANAGER: MysqlManager
mysql:
image: mysql:5.6
container_name: mysql
volumes:
- mysqldata:/var/lib/mysql
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD:
MYSQL_DATABASE:
MYSQL_USER:
MYSQL_PASSWORD:
volumes:
mysqldata:
app-conf:
Ce qui entraîne l'erreur :
Et je l'ai essayé avec un chemin donné, comme un volume monté.
/src/docker/myapp/upload:/var/www/html/upload
/src/docker/myapp/upload:/var/www/html/config.php
Cependant, les deux méthodes ne fonctionnent pas. Avec le volume monté, je vois que le téléchargement est créé.
Mais ensuite il échoue avec :
/var/www/html/config.php \" causé \" pas un répertoire \""
Si je l'essaie avec
/src/docker/myapp/upload/config.php:/var/www/html/config.php
Docker crée le dossier de téléchargement et ensuite un dossier config.php. Pas un dossier.
Ou existe-t-il un autre moyen de faire persister la configuration ?
5 votes
Dans mon cas, je l'ai simple pour "toucher" un fichier vide avant de créer le conteneur/volume. Si le fichier n'existait pas, il créait un répertoire.