dfdfdfgdfd

domingo, 28 de maio de 2017

Como usar PosgreSQL com Docker

O PostgreSQL tem um repositório oficial na Docker Store, onde podemos obter imagens com as ultimas versões. Com isso é facial iniciar um serviço do PostgreSQL com configurações default.
O comando a seguir executa a ultima versão estável do PostgreSQL disponível no repositório como serviço  na porta 5432 com senha "mypwd" para o super usuário "postgres":
Executar serviço docker com PostgreSQL
docker run -d -e POSTGRES_PASSWORD=mypwd --name mypostgresql postgres
Parâmetros:
-d Executa comando em background
-e Configura variáveis de ambiente do processo Docker.
--name Nome do processo, usado como referência em outros comandos.
Testando serviço executando a ferramenta psql:
Executando comando psql
docker exec -i -t mypostgresql psql -U postgres

Estendendo imagem para usar locale pt_BR.utf-8

A  configuração de linguajem e codificação de caracteres, por default são en_US.utf8,  geralmente não adequado a caracteres da linguá portuguesa, podemos extender a imagem docker do PostgreSQL e alterar as configurações de Encoding,  Collate e  Ctype. Para isso devemos:
  1. Criar arquivo Dockerfile para definir características da nova imagem.
  2. Fazer build da nova imagem.
  3. Executar processo apontando para imagem criada.

1. Criar arquivo Dockerfile para definir características da nova imagem.
mkdir mypostgresql;
echo 'FROM postgres:9.6
LABEL version="0.0.1"
LABEL name="mypostgres:9.6"
LABEL release-date="2017-02-08"
LABEL description="PostgreSQL 9.6 pt_BR.UTF8"
RUN localedef -i pt_BR -c -f UTF-8 -A /usr/share/locale/locale.alias pt_BR.utf-8
ENV LANG pt_BR.utf8' > mypostgresql/Dockerfile
2. Fazer build da nova imagem
cd mypostgresql;
docker build -t mypostgresql:9.6 .
Parâmetros:
-t Nome da image "nome:tag", usado para referência em outros comandos.
3. Executar processo apontando p/ imagem criada.
docker run -t \
  -e POSTGRES_PASSWORD=postgres \
  -p 5432:5432 \
  --name poc-postgresql mypostgresql:9.6
Parâmetros:
 -p especifica ponte entre a porta do container e porta do host

Por default os dados são armazenados no container, logo se este for apagado todos os dados serão perdidos, uma boa pratica é usar o recurso de Data Volumes, direcionado o conteúdo de determinada pasta do container para a maquina host, evitando perda de dados quando um container for removido. No caso do PostgreSQL podemos mapear o conteúdo da pasta "/var/lib/postgresql/data", logo o comando de execução do serviço ficaria  assim:
Executar serviço com Data Volume
docker run -t \
  -v $HOME/pgdata:/var/lib/postgresql/data \
  -e POSTGRES_PASSWORD=postgres \
  -p 5432:5432 \
  --name poc-postgresql mypostgresql:9.6

 Outros comandos do Docker

docker images #lista imagens
docker ps #lista containers em execução
docker stop <container name> #para execução do container pelo nome (--name)
docker rm <container name>  #remove container pelo nome

Referências




Nenhum comentário:

Postar um comentário