Ich habe eine Anwendung entwickelt, die vier Docker-Container (php7.0-fpm, nginx, mysql und phpmyadmin) verwendet, die beide so laufen sollten lokal (MacOS) und auf meinem VPS (Debian 9 Stretch). Gestern habe ich Port 80 zu meiner Nginx-Konfiguration in meiner Docker-Compose-Datei hinzugefügt, um sicherzustellen, dass Nginx http-Verkehr auf https erzwingen kann. Dies funktioniert lokal wie ich erwartet hatte, aber wenn ich die Änderungen auf meinem VPS gezogen erhalte ich die folgende Meldung, wenn ich docker-compose up --build
laufen:Docker-Container lädt nicht in VPS (Debian), die lokal funktioniert
ERROR: for my_nginx Cannot start service nginx: driver failed programming external connectivity on endpoint my_nginx (ff89cec0a968850919eebabe9e003c0bd4e65205eb6f3c3dd286037b3a1745fc): Error starting userland proxy: listen tcp 0.0.0.0:80: listen: address already in use
ERROR: for nginx Cannot start service nginx: driver failed programming external connectivity on endpoint my_nginx (ff89cec0a968850919eebabe9e003c0bd4e65205eb6f3c3dd286037b3a1745fc): Error starting userland proxy: listen tcp 0.0.0.0:80: listen: address already in use
Das Merkwürdige das ist, wenn ich den Befehl lokal funktioniert alles einwandfrei laufen.
Unter den Inhalt meiner Docker-compose.yml
version: "2.0"
services:
nginx:
build: ./nginx/
ports:
- 443:443
- 80:80
volumes:
- ${APPLICATION_ROOT}:/${WEBROOT}
- ./ssl:/etc/nginx/ssl
- ./nginx/config/default.conf:/etc/nginx/conf.d/default.conf
restart: always
depends_on:
- php
environment:
ENVIRONMENT: "${APPLICATION_ENV}"
URL: "${APPLICATION_URL}"
container_name: my_nginx
php:
build: ./php/
ports:
- 8080:80
volumes:
- ${APPLICATION_ROOT}:/${WEBROOT}
restart: always
depends_on:
- mysql
environment:
ENVIRONMENT: "${APPLICATION_ENV}"
URL: "${APPLICATION_URL}"
MYSQL_HOST: "${DB_HOST}"
MYSQL_DATABASE: "${DB_NAME}"
MYSQL_USER: "${DB_USERNAME}"
MYSQL_PASSWORD: "${DB_PASSWORD}"
container_name: my_php
mysql:
build: ./mysql/
volumes:
- ./db:/var/lib/mysql
restart: always
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: "${DB_ROOT_PASSWORD}"
MYSQL_HOST: "${DB_HOST}"
MYSQL_DATABASE: "${DB_NAME}"
MYSQL_USER: "${DB_USERNAME}"
MYSQL_PASSWORD: "${DB_PASSWORD}"
explicit_defaults_for_timestamp: 1
container_name: my_db
phpmyadmin:
build: ./phpmyadmin/
restart: always
depends_on:
- mysql
ports:
- 8181:80
environment:
PMA_HOST: my_db
MYSQL_ROOT_PASSWORD: "${DB_ROOT_PASSWORD}"
MYSQL_USERNAME: "${DB_USERNAME}"
MYSQL_PASSWORD: "${DB_PASSWORD}"
container_name: my_phpmyadmin
Weiß jemand, was ich hier fehlt? Ich habe versucht, die PHP-Ports auf 8282:80
zu ändern, aber das hat auch nicht funktioniert (und ich verstehe nicht wirklich, wie Ports & alle funktionieren). Und wie funktioniert es lokal auf meinem Mac?
Apache ist auf meinem vps installiert und hört Port 80, so dass ich nginx Port 8001 zu hören. Das hat es gelöst. Thnx – Maurice