Hello everyone,
Can you help me please ?
I have 2 docker-compose one with various app and haproxy
services:
haproxy:
image: haproxy:2.8
container_name: haproxy
ports:
- 80:80
- 443:443
expose:
- '80'
- '443'
volumes:
- ./config/haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg
- ./config/haproxy/certs/:/usr/local/etc/haproxy/certs/
- ../log:/var/log
depends_on:
- apache-php56
- apache-php74
- apache-php82
networks:
network:
ipv4_address: 10.10.0.2
apache-php56:
user: root
container_name: php56
image: permisapoints/apache-php56
depends_on:
- mariadb
volumes:
- ./config/php56/sites-custom:/etc/apache2/sites-custom
- ./config/php56/sites-enabled:/etc/apache2/sites-enabled
- ./config/php56/hosts:/etc/hosts
- ../sites:/var/www/sites
- ../data:/data
- ../log:/var/log
networks:
network:
ipv4_address: 10.10.0.3
apache-php74:
user: root
container_name: php74
image: permisapoints/apache-php74
depends_on:
- mariadb
volumes:
- ./config/php74/sites-custom:/etc/apache2/sites-custom
- ./config/php74/sites-enabled:/etc/apache2/sites-enabled
- ./config/php74/hosts:/etc/hosts
- ../sites:/var/www/sites
- ../data:/data
- ../log:/var/log
networks:
network:
ipv4_address: 10.10.0.4
apache-php82:
user: root
container_name: php82
image: permisapoints/apache-php82
depends_on:
- mariadb
volumes:
- ./config/php82/sites-custom:/etc/apache2/sites-custom
- ./config/php82/sites-enabled:/etc/apache2/sites-enabled
- ./config/php82/hosts:/etc/hosts
- ../sites:/var/www/sites
- ../data:/data
- ../log:/var/log
networks:
network:
ipv4_address: 10.10.0.5
mariadb:
container_name: mariadb
image: permisapoints/mariadb
ports:
- 3306:3306
restart: always
volumes:
- ./database:/var/lib/mysql
- ../log/mysql:/var/log/mysql
- data:/nfs
networks:
network:
ipv4_address: 10.10.0.6
memcached:
container_name: memcached
image: memcached
networks:
network:
ipv4_address: 10.10.0.7
redis:
container_name: redis
image: redis
networks:
network:
ipv4_address: 10.10.0.8
redis-commander:
container_name: redis-commander
hostname: redis-commander
image: rediscommander/redis-commander:latest
restart: always
environment:
- REDIS_HOSTS=local:redis:6379
ports:
- "8081:8081"
networks:
network:
ipv4_address: 10.10.0.9
rabbitmq:
container_name: rabbitmq38
image: permisapoints/rabbitmq
ports:
- 15672:15672
networks:
network:
ipv4_address: 10.10.0.10
tor:
container_name: tor
image: dockage/tor-privoxy
ports:
- 9050:9050
- 9051:9051
- 8118:8118
networks:
network:
ipv4_address: 10.10.0.11
volumes:
data:
driver: local
driver_opts:
type: cifs
device: "//10.75.10.11/servers/srv-hubic/pap/mysql"
o: "username=zamp,password=PrgAmp,uid=1000,gid=1000"
networks:
network:
name: pap_dev_network
external: true
driver: bridge
ipam:
driver: default
config:
- subnet: 10.10.0.0/16
gateway: 10.10.0.1
And an other app with this own docker with caddy (http server) and php app GitHub - api-platform/api-platform: 🕸️ Create REST and GraphQL APIs, scaffold Jamstack webapps, stream changes in real-time.
services:
php:
container_name: 'api-gateway'
image: ${IMAGES_PREFIX:-}app-php
restart: unless-stopped
environment:
SERVER_NAME: ${SERVER_NAME:-api-gateway.localhost}, php:80
TRUSTED_PROXIES: ${TRUSTED_PROXIES:-127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16}
TRUSTED_HOSTS: ${TRUSTED_HOSTS:-^${SERVER_NAME:-example\.com|api-gateway\.localhost}|php$$}
volumes:
- caddy_data:/data
- caddy_config:/config
networks:
pap_dev_network:
ipv4_address: 10.10.0.12
expose:
- "85"
ports:
# HTTP
- target: 80
published: ${HTTP_PORT:-85}
protocol: tcp
# # HTTPS
# - target: 443
# published: ${HTTPS_PORT:-450}
# protocol: tcp
# # HTTP/3
# - target: 443
# published: ${HTTP3_PORT:-443}
# protocol: udp
networks:
pap_dev_network:
external: true
volumes:
caddy_data:
caddy_config:
The caddy file
{
{$CADDY_GLOBAL_OPTIONS}
frankenphp {
{$FRANKENPHP_CONFIG}
}
auto_https disable_redirects
}
{$CADDY_EXTRA_CONFIG}
http://api-gateway.localhost {
bind 0.0.0.0
tls internal
respond "Hello, world! I am being accessed from {scheme}."
}
Haproxy conf
global
log stdout format raw local0
maxconn 2000
daemon
defaults
log global
mode http
option httplog
option dontlognull
retries 3
timeout connect 5s # Timeout de connexion de 5 secondes
timeout client 500s # Timeout client de 500 secondes
timeout server 500s # Timeout serveur de 500 secondes
resolvers docker
nameserver dns 127.0.0.11:53
resolve_retries 3
timeout resolve 1s
timeout retry 1s
hold other 10s
hold refused 10s
hold nx 10s
hold timeout 10s
frontend http-in
bind *:80
acl is_gateway hdr(host) -i api-gateway.localhost
use_backend caddy_backend if is_gateway
backend php56_backend
server apache-php56 apache-php56:80
backend php74_backend
server apache-php74 apache-php74:80
backend php82_backend
server apache-php82 apache-php82:80
backend caddy_backend
server php 127.0.0.1:85 check
The problem is i have a host my macos with 127.0.0.1 api-gateway.localhost
If i access http://api-gateway.localhost:85 my route work
But if i use without port i have an error
<body>
<h1>503 Service Unavailable</h1>
No server is available to handle this request.
</body>
</html>
How to do to redirect traffic from ha proxy i the container to caddy in other container ?
Is possible to use https ?
Thanks