docker-compose
Docker-Compose-Beispiel für mehrere Container mit Standardnetzwerk
Suche…
Bemerkungen
Standardmäßig richtet Compose ein einzelnes Netzwerk für Ihre App ein. Jeder Container für einen Dienst tritt dem Standardnetzwerk bei und kann sowohl von anderen Containern in diesem Netzwerk erreicht werden als auch von ihnen unter einem Hostnamen erkannt werden, der mit dem Containernamen identisch ist.
Über Links können Sie zusätzliche Aliase definieren, unter denen ein Dienst von einem anderen Dienst aus erreichbar ist. Sie sind nicht erforderlich, damit Dienste kommunizieren können. Standardmäßig kann jeder Dienst jeden anderen Dienst unter dem Namen dieses Dienstes erreichen.
So erstellen Sie eine grundlegende LAMP-Umgebung mit Standardnetzwerk
docker-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;
}
}
}
Beachten Sie, dass die Nginx-Konfiguration vereinfacht ist. Die oben genannten Funktionen sollten jedoch zum Testen funktionieren. Im Wesentlichen müssen Sie lediglich die PHP-App verwenden. Karten zu Port 81, um Konflikte auf dem Host zu vermeiden - passen Sie sie bei Bedarf an.
In Bezug auf die Verknüpfung können Sie docker-compose exec mysql ping -c2 nginx
sehen: Wenn Sie docker-compose exec mysql ping -c2 nginx
ausführen: docker-compose exec mysql ping -c2 nginx
zum Ping vom Mysql-Container zum Nginx-Container, werden Sie erfolgreich sein, obwohl zwischen diesen Containern keine Links angegeben sind . Docker Compose verwaltet diese Links im Standardnetzwerk für Sie.