Imagem docker lemp/lnmp de fácil uso

Eu uso docker para ambiente de desenvolvimento, logo não preciso de tamanha complexidade com várias imagens dependentes montagem de diretórios cruzados etc.

Para esta finalidade basicamente preciso de um servidor lemp (ou lnmp), que é sigla para “Linux, (e)nginx, mysql e php” e um php myadmin.

Assim sendo criei uma imagem disponível publicamente no docker hub para quem precisa desta finalidade.

Para subir a aplicação com esta imagem, basta criar um docker-composer.yml na raiz de seu projeto com o conteúdo abaixo:

web:
 image: fbraz3/lnmp
 volumes:
 - ./:/app/public/
 ports:
 - "127.0.0.1:80:80"
 - "127.0.0.1:3306:3306"

E depois rodar o comando:

docker-compose up -d

A aplicação estará acessível em http://localhost/ e o PHPMyAdmin em http://localhost/pma/ simples assim.

Já está pré-configurado e com todos os grants necessários uma base de dados com o nome de “app” (sem as aspas) para uso na aplicação.

Como uso essa imagem nos meus projetos venho sempre aprimorando ela, então o changelog vai ficar sempre disponível em https://hub.docker.com/r/fbraz3/lnmp/

 

Alguns comandos úteis em docker

Esse comando faz deploy de uma imagem e loga no bash dela

docker run -t -i -P --net=host image_name /bin/bash

Logar no ssh de um container

docker exec -i -t container_name bash

Docker-Compose: Subir imagem

docker-compose up -d

Docker-Compose: Descer imagem

docker-compose stop

Ao logar no ssh, alguns comandos que depoendem da variavel TERM podem apresentar comportamento anômalo (primcipalmente no editor VIM), é só executar esse comando:

export TERM=xterm

Otimizando o Linux com Swapiness

A partir das últimas versões do kernel 2.6.x, o kernel do linux passou a permitir que o usuário controle a partir de qual percentual de uso da memória RAM que será utilizado o swap.

Entretanto não se preocupe com essa questão de versão do kernel, pois atualmente o mesmo está na versão 4.x, então a não ser que você use um linux do tempo das cavernas sua distro terá suporte a esta configuração.

Existem duas maneiras de ver como seu swapiness está configurado:

sudo cat /proc/sys/vm/swappiness
60

ou

sysctl -a|grep swappiness
vm.swappiness = 60

no caso acima, ele irá utilizar swap a partir de 40% de uso da memória RAM (a configuração se baseia em memória disponível, então use sempre “100 – valor” para aplicar esta definição).

Primeiramente, poemos definir este valor em tempo de execução de forma testar qual valor melhor se adéqua a sua máquina

sysctl -w vm.swappiness=5

Acima configuramos para só usar o swap quando a memória RAM estiver 95% cheia (lembre do cálculo mencionado anteriormente).

O único problema é que essa configuração se perde ao reiniciar a máquina, então, para torná-la permanente, basta editar o arquivo /etc/sysctl.conf e adicionar/editar a seguinte linha:

vm.swappiness = 5

Certo, e qual número eu devo configurar?

A configuração vai depender da quantidade de RAM a máquina, mas por via e regra, quanto mais memória RAM, menor deverá ser o swapiness. 

Em um note com 4GB de RAM que uso pra desenvolvimento, consegui o melhor desempenho setando o número em 5, porém é interessante testar com outros valores antes e tornar a configuração definitiva 😉

criando proxy através do ssh

Eu uso muito esta técnica para efetuar testes em sistemas simulando acesso vindo de redes externas.

Esta dica funciona com qualquer servidor ssh que não possua bloqueios na porta 80 e 443. Logo também é possível o uso em servidores compartilhados!

Pra quem usa linux, é muit fácil, basta executar o comando abaixo no terminal e configurar o navegador para acesso a internet via proxy socks na porta determinada no comando

syntaxe:

ssh -Nn -D PORTA [email protected]

exemplo:

ssh -Nn -D 4050 [email protected]

No exemplo acima, basta configurar o navegador para acesso via proxy socks5 na porta 4050

Converter chave ppk pra pem

Pra isso é necessário ter o putty instalado, por sorte ele tem port pra sistemas *nix

Instalando no Linux (debian/ubuntu)

sudo apt-get install putty-tools

Instalando no OpenSuSE

sudo zypper install putty

Instalando no MAC OSX

brew install putty

Pra converter, basta usar o comando:

puttygen MINHACHAVE.ppk -O private-openssh -o MINHACHAVE.pem