em Geral

Nginx Web Proxy + Docker para hospedagens

Fala comunidade tudo bem ? a ideia de hoje é montarmos um ambiente para hospedagens utilizando NGInx Web Proxy + Docker.

Estou levando em consideração o seguinte ambiente:

Sistema Operacional
Ubuntu Server 16.04.6 LTS

Aplicações
NGINX 1.10.3
Docker 18.09

1 – Preparando o Sistema Operacional
2 – Instalando o NGINX
3 – Instalando o Docker
4 – Configurando um ambiente Docker + Docker Compose
5 – Configurando o Proxy Reverso

1 – Preparando o Sistema Operacional

Primeiramente vamos certificar que o Apache não ficará rodando e escutando as conexões direcionadas a porta 80. Sendo assim vamos desabilitar o Apache com o comando abaixo:

sudo systemctl disable apache2

Habilitando o NGINX para iniciar com o sistema:

sudo systemctl enable nginx

Vamos agora atualizar nossa lista de pacotes do Ubuntu rodando o comando

sudo apt-get update

E depois vamos atualizar o sistema rodando o comando

sudo apt-get upgrade

2 – Instalando o NGINX

A instalando do NGINX é bem simples. Se o Apache estiver no momento que você rodar o apt-get install você não deverá encontrar problemas. Então vamos para o terminar e rodar o comando:

sudo apt-get install nginx

3 – Instalando o Docker

Para instalar o Docker devemos estar com a lista de pacotes atualizada. Então vamos certificar que está tudo atualizado antes de prosseguirmos.

Com o sistema atualizado vamos adicionar as GPG Keys dos Mirrors do Docker em nosso sistema para que possamos continuar.

sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common

na sequência rodaremos o comando curl com pipe para adicionar as chaves do apt

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add –

OK, para certificar que a chave de GPG foi adicionada corretamente vamos verificar as fingerprints

sudo apt-key fingerprint 0EBFCD88

O resultado deverá ser algo como:

pub 4096R/0EBFCD88 2017-02-22
Key fingerprint = 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid Docker Release (CE deb) [email protected]
sub 4096R/F273FCD8 2017-02-22

Caso sua arquitetura de processador seja baseada em X86 você deverá utilizar o repositório

sudo add-apt-repository \
“deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable”

Depois de adicionado o repositório vamos rodar novamente o apt para atualizar a lista de pacotes

sudo apt-get update

Legal, agora que temos tudo pronto basta instalar o Docker então devemos rodar

sudo apt-get install docker-ce docker-ce-cli containerd.io

Agora que temos o Docker instalado podemos testar ele rodando

docker run hello-world

Precisaremos do orquestrador Docker Compose para gerenciar nossos containers então devemos instalar

sudo apt install docker-compose

4 – Configurando um ambiente Docker + Docker Compose

Perfeito, agora que temos tudo instalado vamos partir para a configuração do Docker com orquestração do Docker Compose. Estarei levando em consideração que iremos subir um website rodando Apache2 + PHP 7.1 + PhpMyAdmin + MySQL 5 então nossa receita seria algo como o arquivo abaixo:

version: '2'

services:
  jaccon_db:
    image: mysql:5.7
    container_name: jaccon_db
    ports:
      - "8000:3306"
    volumes:
      - ./database/data:/var/lib/mysql
      - ./database/initdb.d:/docker-entrypoint-initdb.d
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: quah3Aht3dua7iechaeN 
      MYSQL_DATABASE: jaccon
      MYSQL_USER: jaccon
      MYSQL_PASSWORD: Thahva6aeth6ohNie5ki

  jaccon_wp:
    depends_on:
      - jaccon_db
    image: wordpress:php7.1
    container_name: jaccon_wp
    ports:
      - "8001:80"
    restart: always
    links:
      - jaccon_db:mysql
    volumes:
      - ./src:/var/www/html
  
  phpmyadmin:
    image: phpmyadmin/phpmyadmin:latest
    container_name: jaccon_phpmyadmin
    volumes:
      - ./phpmyadmin/config.user.inc.php:/etc/phpmyadmin/config.user.inc.php
    links:
      - jaccon_db
    ports:
      - "8002:80"
    environment:
      - PMA_ARBITRARY=1
      - PMA_HOST=jaccon_db

Você pode fazer o download do arquivo de exemplo do Docker no meu GitHub clicando aqui em download do arquivo

Este é um exemplo para você dar seus primeiros passos no Docker voltando mais para hosting de aplicações. Espero que tenha ajudado ai a comunidade.

Abs