2017-10-26 3 views
-1

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?

Antwort

0

Der Fehler, wenn Sie es lesen, sagt alles:

address already in use

Etwas bereits auf Port hört 80. Wenn Sie netstat -pln | grep 80 ausführen, wird angezeigt, welcher Prozess genau Ihren Port blockiert. Sie können dann kill -9 es und bauen Sie Ihre Container ohne Fehler.

+0

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

Verwandte Themen