Docker Nginx + PHP 2

← ← ←   11/06/2022 09:57:58 | Posted by: Demostenes Albert |

Carteira Bitcoin: bc1qju3r9r07vzejdr0uazmdwgcqljt8n2vztyvkfx4gd5k0a97042wqkdwxrl


Olá senhores, continuaremos a mostrar, 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 "servidores" funcionarem no nosso nginx com docker e suas configurações, usando as aplicações php separadas. app1 e app2

Para início 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. A configuração inicial do nginx (.conf) está no post anterior aqui

Logo Docker

No ultimo post nos não testamos nossa configuração para testar basta

    $ docker-compose up -d
    $ docker-compose ps -a
  

O menos "-d" é para detachar dos logs do container, caso queira continuar vendo os log bem como matar o mesmo com ctrl+c basta remover o menos "-d" O ultimo comando irá mostra os container com processos, devera aparecer algo como

Porem nesse momento os logs irão reclamar que o hostname app1 não foi encontrado portanto temos de configurar nosso container ou containers php para trabalharmos corretamente, segue configuração para o app1:

    $ mkdir ~/Documentos/Dev/app1
    $ cd  ~/Documentos/Dev/app1
    $ touch Dockerfile
    $ touch docker-compose.yml
  

Criado os arquivos para iniciar o container, agora vamos escrever o nosso docker-compose.yml:

    version: "3.1"
    services:
     app1:
      build:
       args:
        user: demostenes
        uid: 1000
       context: ./
       dockerfile: Dockerfile
      image: app1
      container_name: app1
      restart: unless-stopped
      working_dir: /var/www
      volumes:
       - ./:/var/www
     
    networks:
     default:
      name: my_apps
  

Lembre-se de substituir o user para o seu usuario e seu uid para o id do seu usuário

Partimos agora para a edição do Dockerfile:

    FROM php:8.0-rc-fpm
    ARG user
    ARG uid
    RUN apt-get update && apt-get install -y \
     git \
     curl \
     libpng-dev \
     libonig-dev \
     libxml2-dev \
     zip \
     unzip 
    RUN apt-get clean && rm -rf /var/lib/apt/lists/*
    RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd
    COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
    RUN useradd -G www-data,root -u $uid -d /home/$user $user
    RUN mkdir -p /home/$user/.composer && \
        chown -R $user:$user /home/$user
    WORKDIR /var/www
    USER $user
  

Repetiremos o mesmo processo para o app2, mudando obviamente o app1 para app2, por hora é isso no próximo post voltaremos com os testes para a validação do ambiente, para reclamações sugestões comentários ou qualquer coisa basta escrever nos comentários abaixo.