-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Améliorations #1
Comments
Super issue !
|
Ok pour le fichier |
Pour Mysql, l'import se fait effectivement avec le volume |
Pour les 2 fichiers compose, par contre, je ne vois pas l'intérêt... Il faut se dire que d'autres serveurs vont être ajoutés (Swoole, Workerman, RoadRunner...), et se serait malvenu de créer un compose pour chacun d'entre eux. Et avec un seul compose, c'est plus simple qd même:
Pour NginX
|
SI vous avez autant de serveurs implémentés dans le fichier La commande Cela permet de découper la configuration sans savoir à se répéter et d'éviter d'avoir un fichier Si je prends votre configuration existante, on aurait ces fichiers là :
version: "3.8"
services:
php:
build:
context: './php/'
args:
- PHP_VERSION=${PHP_VERSION:-8.0}-fpm
networks:
- backend
volumes:
- ./projects/:/var/www/html/
mysql:
image: mysql:${MYSQL_VERSION:-8.0}
volumes:
- ./mysql/db:/var/lib/mysql:rw
- ./mysql/sql:/docker-entrypoint-initdb.d/:rw
networks:
- backend
environment:
- MYSQL_ROOT_PASSWORD=${MYSQL_PASSWORD}
phpmyadmin:
image: phpmyadmin/phpmyadmin
ports:
- '8099:80'
restart: always
environment:
PMA_HOST: mysql
depends_on:
- mysql
networks:
frontend:
backend:
version: "3.8"
services:
apache:
build:
context: './apache/'
args:
- APACHE_VERSION=${APACHE_VERSION:-2.4.53}-alpine
depends_on:
- php
- mysql
networks:
- frontend
- backend
ports:
- "8080:80"
volumes:
- ./projects/:/var/www/html/
version: "3.8"
services:
nginx:
image: nginx:${NGINX_VERSION:-latest}
depends_on:
- php
- mysql
ports:
- "8080:80"
volumes:
- ./projects/:/var/www/html/
- ./nginx/:/etc/nginx/conf.d/
networks:
- frontend
- backend Pour lancer php, mysql, phpMyAdmin avec Apache : Je mets la doc de docker sur le partage de config entre plusieurs fichiers. |
D'un côté, le multi-compose semble plus propre, mais il n'y aura que quelques serveurs (Apache, Nginx, Swoole, Workerman, ngx_php, RoadRunner), pas 60: donc le fichier compose.yml ne sera pas si grand. Et le multi-compose a surtout une incidence assez lourde sur l'utilisation:
qu'avec:
Pour ce qui est de la commande sans paramètre;
qui démarrerait tout, l'utilisateur n'est pas sensé la lancer... |
Je comprends votre point de vue mais ceci dit, si vous voulez démarrer les différents services à partir d'un fichier il faudra quand même faire : docker-compose up -d php mysql phpMyAdmin nginx au lieu de : docker-compose -f compose.yml -f compose.nginx.yml up -d Du point de vue des utilisateurs Docker, empêcher ces derniers de ne pas écrire Sinon pour résoudre la chose, pourquoi ne pas faire un Makefile ? 😀 |
non, pas avec le
Le démarrage d'un serveur déclenche celui de php et mysql. Mais dès que je vais ajouter d'autres Dbs, l'utilisateur sera effectivement obligé de spécifier lesquelles:
Laradock les a cassées avant : https://laradock.io/getting-started/#Usage
oui, mais le make poserait un problème de compatibilité multi-plateformes, les utilisateurs de Windows seraient obligés d'installer un truc en plus par ex |
Il me semblait que |
Je confirme, le
Pour le Je vais voir si c'est possible avec les profiles |
A mon humble avis, le config est déjà robuste ! Voici tout de même quelques points que j'améliorais :
compose.yml
qui pourront être écrasées d'après la doc comme ceci :Ensuite, j'effacerai le fichier
.env
car cela peut provoquer des confusions avec le fichier.env
de l'application.( Y'en a-t-il un d'ailleurs ?).Exemple: Dans le fichier
.env
, vous appelez la version d'Apache2.4.53-alpine
, qui est en fait un tag d'image. Cela laisse à l'utilisateur le choix du tag ce qui peut provoquer des erreurs de build si l'utilisateur décide d'utiliser une imagedebian
et que le dockerfile apache contient des commandesapk
.Je ferai plutôt :
Je trouve ça dommage de construire une image pour la DB sachant que l'import de la DB peut déjà se faire au démarrage du conteneur avec
./mysql/sql:/docker-entrypoint-initdb.d/:rw
Enfin je créerai 2 fichiers
compose.yml
, un pour la conf Apache, l'autre pour la conf Nginx. On pourrait le lancer comme ça :docker-compose up -d -f compose-apache.yml
docker-compose up -d -f compose.base.yml -f compose.apache.yml
oudocker-compose up -d -f compose.base.yml -f compose.nginx.yml
The text was updated successfully, but these errors were encountered: