Pages : 1
#1 Le 15/03/2021, à 11:15
- Compte supprimé
Docker-compose.yml et les volumes
Bonjour,
Je cherche à comprendre le fonctionnement de docker avec docker-compose.
En me basant sur le tuto de la documentation, j'arrive à créer un serveur lamp qui affiche bien la page que j'ai placée dans ~/www.
Mais cela ne fonctionne que par la méthode simple du tuto ou par docker-compose si je prends le fichier docker-compose.yml donné.
Par contre si je veux passer sur une autre version de php ou mysql, l'installation se fait bien, mais je ne peux pas afficher la page attendue. A la place il y a une erreur 403.
Sur la VM du serveur, je relève ceci :
[Mon Mar 15 10:06:36.113302 2021] [autoindex:error] [pid 16] [client 192.168.0.2:49314] AH01276: Cannot serve directory /var/www/html/: No matching DirectoryIndex (index.php,index.html) found, and server-generated directory index forbidden by Options directive
Je me demande si le lien entre mes répertoires locaux et ceux des conteneurs docker se fait bien. Qu'est-ce que j'oublie ?
Dernière modification par Compte supprimé (Le 15/03/2021, à 11:16)
#2 Le 15/03/2021, à 12:27
- Junkaria
Re : Docker-compose.yml et les volumes
Est-ce que tu as un des fichiers index.php ou index.html dans le dossier /var/www/html/ ?
Que contient ta conf ?
Ubuntu 08.04-11.04 | Linux Mint | ArchLinux
Hors ligne
#3 Le 15/03/2021, à 13:11
- Compte supprimé
Re : Docker-compose.yml et les volumes
Est-ce que tu as un des fichiers index.php ou index.html dans le dossier /var/www/html/ ?
un serveur lamp qui affiche bien la page que j'ai placée dans ~/www.
Par contre, pour la configuration, je ne sais même pas comment la consulter. C'est peut-être le début de la solution.
Dernière modification par Compte supprimé (Le 15/03/2021, à 13:12)
#4 Le 20/03/2021, à 22:51
- weds
Re : Docker-compose.yml et les volumes
Docker est tellement pratique !
Mais pour avoir un serveur web dans un conteneur qui peut tourner en production, il y a parfois quelques embûches.
J'ai dû construire une image pour pouvoir faire tourner le framework Laravel sur un raspberry pi, ça ne répond pas à ta question mais ça peut te donner un exemple qui marche : https://hub.docker.com/r/moduleart/php-apache-certbot
Il y a le fichier docker-compose.yml avec un conteneur pour la base de donnée, un pour phpmyadmin et un pour le serveur web qui intègre certbot.
La ruse est d'utiliser :
network_mode: host
Ce qui va permettre d'accéder au serveur web comme s'il tournait directement sur le système.
Pour faire un build à ta façon, ce n'est pas difficile :
docker build -t nomDeTonImage:tag chemin/vers/dossierAvecDockerfile
Voici le modèle de Dockerfile à personnaliser :
FROM php:7.4-apache
RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf
RUN apt-get update && apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libmcrypt-dev \
libpng-dev \
zlib1g-dev \
libxml2-dev \
libzip-dev \
libonig-dev \
graphviz \
certbot \
python-certbot-apache
RUN docker-php-ext-configure gd \
--with-jpeg \
--with-freetype
RUN docker-php-ext-install -j$(nproc) gd \
&& docker-php-ext-install pdo_mysql \
&& docker-php-ext-install mysqli \
&& docker-php-ext-install zip \
&& docker-php-source delete
RUN a2enmod rewrite
RUN a2enmod ssl
RUN a2enmod proxy
RUN a2enmod proxy_http
RUN a2enmod proxy_html
RUN a2enmod proxy_wstunnel
RUN a2enmod headers
RUN service apache2 restart
ADD tonCheminVers/ssl-cert-snakeoil.pem /etc/ssl/certs/
ADD tonCheminVers/ssl-cert-snakeoil.key /etc/ssl/private/
# Ports
EXPOSE 80
EXPOSE 443
CMD ["apachectl", "-D", "FOREGROUND"]
ubuntu 20.04 LTS sur hp Probook
Debian Buster sur hp Zbook
raspbian (Buster), raspberry pi, serveur web, mail...
Hors ligne
#5 Le 21/03/2021, à 00:57
- krodelabestiole
Re : Docker-compose.yml et les volumes
si c'est toujours d'actualité, poste le contenu complet de ton fichier docker-compose.yml stp.
nouveau forum ubuntu-fr on en parle là : refonte du site / nouveau design
profil - sujets récurrents - sources du site
En ligne
#6 Le 21/03/2021, à 09:32
- Compte supprimé
Re : Docker-compose.yml et les volumes
Merci, alors voilà après avoir refait la VM et suivi la doc.
Le message dans le terminal quand j'obtiens un 403 forbiden
web_1 | [Sun Mar 21 08:22:43.836358 2021] [autoindex:error] [pid 16] [client 192.168.0.2:37748] AH01276: Cannot serve directory /var/www/html/: No matching DirectoryIndex (index.php,index.html) found, and server-generated directory index forbidden by Options directive
web_1 | 192.168.0.2 - - [21/Mar/2021:08:22:43 +0000] "GET / HTTP/1.1" 403 503 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:86.0) Gecko/20100101 Firefox/86.0"
Le docker-compose.yml
version: '2'
services:
web:
image: lavoweb/php-5.6
ports:
- "80:80"
volumes:
- ~/www:/var/www/html
links:
- db:db
db:
image: mysql:5.5
volumes:
- ~/mysql:/var/lib/mysql
ports:
- "3306:3306"
environment:
- MYSQL_ROOT_PASSWORD=root
myadmin:
image: phpmyadmin/phpmyadmin
ports:
- "8080:80"
links:
- db:db
Les droits sur www
moi@vm-beebox:~$ ls -al ~/www
total 12
drwxrwxrwx 2 moi moi 4096 Mar 21 08:11 .
drwxr-xr-x 7 moi moi 4096 Mar 21 08:29 ..
-rwxrwxrwx 1 moi moi 432 Mar 21 08:11 index.html
moi@vm-beebox:~$
Par contre, phpmyadmin s'affiche bien sur le port 8080.
Edit: je ne me suis pas mis dans le groupe docker et donc je lance :
sudo docker-compose up
Dernière modification par Compte supprimé (Le 21/03/2021, à 09:59)
#7 Le 21/03/2021, à 10:06
- Compte supprimé
Re : Docker-compose.yml et les volumes
Je teste en me mettant dans le groupe docker, puis je lance docker-compose up sans sudo.
Je tombe là dedans ? :
https://github.com/docker/for-win/issues/8164
$ docker-compose up
ERROR: Couldn't connect to Docker daemon at http+docker://localhost - is it running?
If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable.
Edit : Tout fonctionne bien et mon index.html s'affiche avec :
sudo docker run -v ~/www:/var/www/html -v ~/mysql:/var/lib/mysql -p 80:80 -p 3306:3306 --restart=always lioshi/lamp:php5
Peut-être que c'est surtout lié aux images docker utilisées.
Dernière modification par Compte supprimé (Le 21/03/2021, à 10:19)
#8 Le 21/03/2021, à 10:27
- bruno
Re : Docker-compose.yml et les volumes
Tu as sans doute un problème avec tes volumes.
AMHA, ce n'est pas une bonne idée de spécifier le volume à monter avec un ~ : cela fait référence au dossier personnel de celui qui a lancé la commande docker run. Il vaut mieux indiquer l’emplacement complet :
/home/moi/www:/var/www/html
Cette commande devrait t'indiquer ce qui monté et où :
docker inspect nom_du_conteneur
Concernant le tuto, je vois plusieurs choses à améliorer :
- utiliser un dépôt officiel PHP plutôt que celui d'un dev inconnu (et une version plus récente si possible )
- utiliser d'autre ports pour éviter un conflit avec un serveur web ou SGBD déjà installé ;
- je ne comprends pas la création du dossier pour le volume à monter ~/.docker/… et encore moins le chmod 77
#9 Le 21/03/2021, à 10:39
- Compte supprimé
Re : Docker-compose.yml et les volumes
Merci, je vais revoir avec ces remarques.
Edit : j'affiche l'index.html de ~/www
je me suis mis dans le groupe docker, je lance "docker-compose up" sans sudo et j'ai laissé ww en mode 777.
A voir sans le 777 et sans être dans le groupe docker ...
Dernière modification par Compte supprimé (Le 21/03/2021, à 11:28)
Pages : 1