Nie mogę zastosować żadnego reverse proxy, a poza tym konieczny jest dostęp poprzez adres IP zamiast domen. Jakie rozwiazanie sugerujesz?
Apr 15, 7:47am
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ą.
Propozycja rozwiązania
Zmodyfikuj plik docker-compose.yml tak, aby każdy kontener używał innego portu na hoście, np.:
yaml
services:
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
Jak to działa?
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.
Dostęp do aplikacji
Aplikacja 1 będzie dostępna pod adresem: http://<IP_SERWERA>:8080
Aplikacja 2 będzie dostępna pod adresem: http://<IP_SERWERA>:8081
Alternatywa: Użycie różnych adresów IP
Jeśli masz wiele adresów IP przypisanych do serwera, możesz przypisać każdy kontener do innego adresu IP, zachowując port 80: