← ← ← 04/06/2022 15:48:43 | Posted by: Demostenes Albert | Follow @demoxtenex
Carteira Bitcoin: bc1qju3r9r07vzejdr0uazmdwgcqljt8n2vztyvkfx4gd5k0a97042wqkdwxrl
Ola senhores, hoje nesse post pretendo trazer algo muito interessante para quem como eu tem interesse em fazer com que o ambiente de dev fique o mais parecido possível com o ambiente de prod.
Para exemplificar vamos fazer dois ou mais "domínios" funcionarem no nosso nginx com docker e suas configurações, usando as aplicações php separadas. app1 e app2
Para inicio de nossas configurações vamos instalar o docker no nosso S.O.(meu caso Ubuntu), para tanto basta seguir a forma de instalação conforme o site oficial do docker.
Uma vez instalado o docker vamos iniciar a nossa configuração, na pasta de destino onde você quiser usar a configuração do nginx, basta criar uma pasta no meu caso
$ mkdir -p ~/Documentos/Dev/nginx $ mkdir -p ~/Documentos/Dev/nginx/docker-compose $ touch ~/Documentos/Dev/nginx/Dockerfile $ touch ~/Documentos/Dev/nginx/docker-compose.yml $ mkdir -p ~/Documentos/Dev/nginx/conf
Os comandos acima em ordem:
Em seguida eu crio os arquivos nome_do_meu_dominio.conf de configuração das aplicações
$ touch ~/Documentos/Dev/nginx/conf/app1.conf $ touch ~/Documentos/Dev/nginx/conf/app2.conf
Navegue até o diretório nginx recem criado nesse caso:
$ cd ~/Documentos/Dev
Agora com o editor de texto de sua preferencia abra o arquivo app1.conf para edição
$ vim ~/Documentos/Dev/nginx/conf/app1.conf
server { listen 80; server_name app1.local; index index.php index.html; error_log /var/log/nginx/error.log; access_log /var/log/nginx/access.log; root /var/www/public; location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass app1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; include fastcgi_params; } location / { try_files $uri $uri/ /index.php?$query_string; gzip_static on; } }
Agora com o editor de texto de sua preferencia abra o arquivo app2.conf para edição
$ vim ~/Documentos/Dev/nginx/conf/app2.conf
server { listen 80; server_name app2.local; index index.php index.html; error_log /var/log/nginx/error.log; access_log /var/log/nginx/access.log; root /var/www/public; location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass app2:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; include fastcgi_params; } location / { try_files $uri $uri/ /index.php?$query_string; gzip_static on; } }
Nesse momento vamos propriamente configurar o docker-compose
$ vim ~/Documentos/Dev/nginx/docker-compose.yml
version: "3.1" services: nginx: image: nginx:alpine container_name: nginx restart: unless-stopped ports: - 8000:80 volumes: - ./:/var/www - ./conf:/etc/nginx/conf.d networks: - my_apps networks: my_apps: driver: bridge
Com estas configurações nos criamos 2 arquivos de configuração para o Nginx tratar com os containers PHP que trataremos no próximo arquivo lembrando que essa configuração permite escalar quantos containers PHP forem necessários apos a execução e configuração dos mesmos. Nos mapeamos também dois diretórios, o raiz ~/Documentos/Dev/nginx/ como /www/html e o ~/Documentos/Dev/nginx/conf como /etc/nginx/conf.d onde ficam os arquivos de configuração do Nginx.
Para duvidas e sugestões deixem comentários abaixo e até o próximo post.