Problem polega na tym, że obie usługi próbują używać tego samego portu (80) na hoście, co jest niemożliwe — port może być przypisany tylko do jednej usługi na raz. Rozwiązaniem jest zmiana portów hosta dla co najmniej jednego z kontenerów, aby nie kolidowały ze sobą.
Zmodyfikuj plik docker-compose.yml tak, aby każdy kontener używał innego portu na hoście, np.:
yamlservices: www_app1: image: app1 container_name: www_app1 restart: unless-stopped ports: - "8080:80" # Port 8080 na hoście → port 80 w kontenerze networks: - www volumes: - ./storage:/var/www/app/storage www_app2: image: app2 container_name: www_app2 restart: unless-stopped ports: - "8081:80" # Port 8081 na hoście → port 80 w kontenerze networks: - www volumes: - ./storage:/var/www/app/storage networks: www: external: true
8080:80 — Port 8080 na hoście jest mapowany na port 80 w kontenerze www_app1.8081:80 — Port 8081 na hoście jest mapowany na port 80 w kontenerze www_app2.http://<IP_SERWERA>:8080http://<IP_SERWERA>:8081Jeśli masz wiele adresów IP przypisanych do serwera, możesz przypisać każdy kontener do innego adresu IP, zachowując port 80:
yamlservices: www_app1: image: app1 container_name: www_app1 restart: unless-stopped ports: - "192.168.1.100:80:80" # Adres IP 1 → port 80 networks: - www volumes: - ./storage:/var/www/app/storage www_app2: image: app2 container_name: www_app2 restart: unless-stopped ports: - "192.168.1.101:80:80" # Adres IP 2 → port 80 networks: - www volumes: - ./storage:/var/www/app/storage
Uwaga: Ta opcja wymaga, aby serwer miał przypisane co najmniej dwa publiczne adresy IP.
8080:80 i 8081:80).Czy chcesz, abym pomógł Ci dostosować to rozwiązanie do Twojej konkretnej infrastruktury?