Tenho um ambiente Coolify com um docker compose com um servidor web PHP e um proxy nginx. O proxy nginx serve arquivos estáticos e atua como um proxy para o servidor PHP.
Tenho dois domínios configurados no Coolify assim
https://app.example.org:80
. https://static.example.org:80
Este é meu arquivo Docker Compose:
version: '3.8'
services:
app:
image: php:8.3-fpm-alpine
container_name: php-app
working_dir: /var/www/html
volumes:
# - ./:/var/www/html
- ./config:/var/www/html/config
- ./backup:/var/www/html/backup
- ./userdata:/var/www/html/userdata
- ./.logs:/var/www/html/.logs
ports:
- "9000:9000"
environment:
PHP_OPCACHE_ENABLE: "1"
PHP_OPCACHE_MEMORY_CONSUMPTION: "128"
build:
context: .
dockerfile: Dockerfile
networks:
- app-network
webserver:
image: nginx:alpine
container_name: nginx-web
volumes:
- ./nginx/sites:/etc/nginx/sites
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
- ./shared_assets:/var/www/html/shared_assets
- ./instances:/var/www/html/instances
environment:
- ENVIRONMENT=production
ports:
- "89:80"
depends_on:
- app
networks:
- app-network
networks:
app-network:
Para Nginx tenho dois sites configurados
server {
listen 80;
server_name static.example.org;
root /var/www/html/shared_assets;
index index.html index.htm;
# Serve static files from the shared_assets folder
location /assets/ {
alias /var/www/html/shared_assets/assets/; # Fix the alias path to match the actual filesystem location
try_files $uri $uri/ =404;
}
}
server {
listen 80;
server_name app.example.org;
root /var/www/html/instances/app/public;
index index.php;
add_header Access-Control-Allow-Origin "*";
location / {
try_files $uri /index.php$is_args$args;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass app:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ /\.ht {
deny all;
}
}
O serviço de arquivos estáticos funciona, mas o aplicativo me dá um tempo limite de gateway. Essa configuração funciona muito bem na minha máquina local.
Alguma ideia de qual pode ser o problema?
O problema era que o fpm só estava ouvindo requisições em 127.0.0.1. Adicionar
RUN sed -i 's/^listen = .*/listen = 0.0.0.0:9000/' /usr/local/etc/php-fpm.d/www.conf
ao Dockerfile corrigiu o problema.