Je connais Docker pour la première fois et j'essaie de savoir comment définir le nom du volume de données créé. Actuellement, le répertoire est automatiquement nommé comme un hachage long sous/var/libs/docker, ce qui est loin d’être convivial.
Je tente de configurer un environnement de développement pour MODX comme indiqué ci-dessous: https://github.com/modxcms/docker-modx
Actuellement, mon fichier docker-compose.yml est le suivant:
web:
image: modx
links:
- db:mysql
ports:
- 80:80
db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: example
ports:
- 3306:3306
command: mysqld --sql-mode=NO_ENGINE_SUBSTITUTION
myadmin:
image: phpmyadmin/phpmyadmin
links:
- db:db
ports:
- 8080:8080
Cela fonctionne parfaitement, mais je ne sais pas comment nommer le volume de données que je modifierais directement avec mon IDE.
(En tant que question secondaire, doit-il être créé sous/var/libs/docker? Ou est-il possible de le définir dans un répertoire de mon dossier personnel?)
Update: Grâce à l'aide de @juliano, j'ai mis à jour mon fichier docker-compose.yml vers:
version: '2'
services:
web:
image: modx
volumes:
- html:/home/muzzstick/dev/modxdev
links:
- db:mysql
ports:
- 80:80
db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: example
ports:
- 3306:3306
command: mysqld --sql-mode=NO_ENGINE_SUBSTITUTION
myadmin:
image: phpmyadmin/phpmyadmin
links:
- db:db
ports:
- 8080:8080
volumes:
html:
external: false
Malheureusement, cela semble empêcher le conteneur Web de s'exécuter. db et les conteneurs myadmin indiquent qu'ils fonctionnent correctement . Il n'y a pas eu d'erreur ... si je tape docker start docker_web_1
, il semble commencer, mais docker ps -a
indique qu'il s'est arrêté dès qu'il a démarré.
Mise à jour 2
Lancer docker-compose up -d
semble fonctionner sans problème. Mais comme vous pouvez le voir ci-dessous, le conteneur Web se ferme dès sa création.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a1dd6d8ac94e modx "/entrypoint.sh apach" 10 seconds ago Exited (1) 5 seconds ago docker_web_1
ee812ae858dc phpmyadmin/phpmyadmin "/run.sh phpmyadmin" 10 seconds ago Up 5 seconds 80/tcp, 0.0.0.0:8080->8080/tcp docker_myadmin_1
db496134e0cf mysql "docker-entrypoint.sh" 11 seconds ago Up 10 seconds 0.0.0.0:3306->3306/tcp docker_db_1
Update 3 OK, les journaux d'erreur de ce conteneur indiquent:
error: missing MODX_DB_Host and MYSQL_PORT_3306_TCP environment variables
Did you forget to --link some_mysql_container:mysql or set an external db
with -e MODX_DB_Host=hostname:port?
Cette erreur semble provenir de https://github.com/modxcms/docker-modx/blob/master/Apache/docker-entrypoint.sh#L15-L20
Cela pourrait-il être quelque chose comme si la liaison était gérée différemment dans docker-compose version 2?
Pour créer un volume de données nommé à l’aide de la version 2 de la composition de fichiers vous aurez une zone séparée:
version: '2'
services:
db:
image: postgres
volumes:
- amazingvolume:/var/lib/postgresql/data
volumes:
amazingvolume:
external: true
Pour que vous puissiez définir le nom du volume (amazingvolume), s’il s’agit de external ou non et sous votre service (db dans cet exemple), vous pouvez définir le répertoire à monter.
Recherchez simplement dans la documentation de docker les volumes montés hébergés:
version: '2'
services:
web:
image: modx
environment:
- MYSQL_PORT_3306_TCP=3306
- MODX_DB_Host=mysql:3306
volumes:
- /home/muzzstick/dev/modxdev/html:/var/www/html
links:
- db:mysql
ports:
- 80:80
db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: example
ports:
- 3306:3306
command: mysqld --sql-mode=NO_ENGINE_SUBSTITUTION
myadmin:
image: phpmyadmin/phpmyadmin
links:
- db:db
ports:
- 8080:8080
Remplacez /var/www/html
par le répertoire où se trouveront les fichiers HTML dans le conteneur. Créez également le répertoire situé à gauche de votre hôte et accordez une autorisation de lecture à tous les utilisateurs.
Cordialement