docker-compose
Docker-compose multi-container voorbeeld met standaardnetwerk
Zoeken…
Opmerkingen
Standaard stelt Compose een enkel netwerk in voor uw app. Elke container voor een service sluit zich aan bij het standaardnetwerk en is zowel bereikbaar voor andere containers op dat netwerk als voor hen te vinden met een hostnaam die identiek is aan de containernaam.
Met koppelingen kunt u extra aliassen definiëren waarmee een service bereikbaar is vanaf een andere service. Ze zijn niet vereist om services te laten communiceren - standaard kan elke service een andere service bereiken op naam van die service.
Een standaard LAMP-omgeving maken met standaardnetwerken
havenarbeider-compose.yml
version: '2'
services:
php:
image: phpmyadmin/phpmyadmin
links:
- mysql:db
depends_on:
- mysql
mysql:
image: k0st/alpine-mariadb
volumes:
- ./data/mysql:/var/lib/mysql
environment:
- MYSQL_DATABASE=mydb
- MYSQL_USER=myuser
- MYSQL_PASSWORD=mypass
nginx:
image: nginx:stable-alpine
ports:
- "81:80"
volumes:
- ./nginx/log:/var/log/nginx
- ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
depends_on:
- php
nginx / nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
sendfile off;
server {
listen 80;
location / {
proxy_pass http://php;
proxy_set_header Host $host;
proxy_redirect off;
}
}
}
Merk op dat de configuratie van nginx is vereenvoudigd, maar hierboven zou moeten werken voor het testen - in feite volstaat het alleen om de php-app te proxyen. Kaarten naar poort 81 om conflicten op de host te voorkomen - pas aan indien nodig.
Wat betreft het koppelen, kunt u zien dat als u uitvoert: docker-compose exec mysql ping -c2 nginx
naar ping van de mysql-container naar de nginx-container, u zult slagen, hoewel er geen koppelingen tussen deze containers zijn opgegeven . Docker Compose bewaart die links in het standaardnetwerk voor u.