Em primeiro lugar, quero ressaltar que estou implantando meu aplicativo de uma forma não recomendada.
O Google sugeriu a implantação de um único contêiner por meio da GUI:
No entanto, estou fazendo isso de uma maneira diferente: eu puxo meu projeto e, em seguida, inicio-o com docker-compose e habilito 7 contêineres com nginx, php, postfix, redis, db e algumas outras coisas.
O firewall da instância de VM permite http e https. E posso me conectar ao IP do host via http. No entanto, parece que não passa corretamente o domínio para o nginx e não consigo me conectar via nome de domínio.
O DNS é adicionado corretamente e o nome de domínio aponta para minha VM, mas depois disso ele entra no tempo limite.
parte do meu docker-compose.yml:
nginx-custom:
depends_on:
- db
- php-fpm-custom
- phpmyadmin
image: nginx-custom:latest
container_name: nginx-custom
links:
- phpmyadmin:phpmyadmin
build:
context: ./docker/nginx/
args:
USER_ID: ${USER_ID}
GROUP_ID: ${GROUP_ID}
SITE_DOMAIN: ${SITE_DOMAIN}
DB_HOST: ${DB_HOST}
DB_ADMIN_WEBPATH: ${DB_ADMIN_WEBPATH}
restart: always
volumes:
- ./ssl:/etc/nginx/ssl
- .:/var/www/site
extra_hosts:
- "host.docker.internal:host-gateway"
ports:
- 80:80
- 443:443
expose:
- '80'
- '443'
networks:
- app-network
E default.conf para nginx:
server {
listen 80 default_server;
listen [::]:80 default_server;
location / {
return 403;
}
}
server {
listen 80;
listen [::]:80;
server_name <SITE_DOMAIN added here via sed>;
root /var/www/site/web;
index index.php;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass php-fpm-custom:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index index.php;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
}
}
O que me confunde nos documentos:
Você não pode mapear as portas de uma instância de VM para as portas do contêiner (opção -p do Docker). Para permitir o acesso aos seus contêineres, consulte Publicação de portas de contêiner.
Acho que esse é o motivo, mas não tenho certeza de como consertar, considerando que estou implantando com o docker-compose. Porque o projeto local funciona bem e posso mapear um site.test na minha máquina local.