Como criar imagem Postgres com dados pré-carregados. (Docker)

Criar uma imagem com dados pré-carregados do Postgres é bem simples. Basta copiar os arquivos para uma pasta específica da imagem.

A imagem que eu vou usar de base é a oficial do próprio Postgres.

Olá amiguinhos que usam Raspberry Pi, este banco de dados roda nela, mesmo com a imagem de 32bits.

 

Dockerfile

FROM postgres:latest

COPY ./setup.sql /docker-entrypoint-initdb.d/

No arquivo acima, precisei apenas copiar os arquivos que devem ser executados na inicialização da imagem. Para este exemplo, tenho apenas um script, mas vc pode copiar mais coisas.

 

Script SQL

O meu script vai criar uma database e depois uma tabela nele.

CREATE DATABASE monitoring;

Comando básico para criação de database. No caso, a que estou criando chama-se monitoring.

 

O próximo passo é mudar a conexão para a database que acabamos de criar…

\c monitoring

Considerando as confingurações deste exemplo, se você não fizer esta mudança, a tabela será criada na base root.

 

Depois basta criar a tabela. Se precisar, pode incluir comandos para inserir dados nas tabelas .

 

Variáveis de ambiente

POSTGRES_USER=root
POSTGRES_PASSWORD=secret

Para esta imagem, configurei o usuário como root e a senha como secret. Você deve mudar isso.

 

Exemplos de Build e Run

sudo docker build -t post:latest .
sudo docker run -d --env-file ./postgres.env.list -p 5432:5432 -p 5433:5433 --restart=unless-stopped --hostname local_postgres.local --name=postgres -it post

Acima estão exemplos de comandos para montar a imagem e depois criar um container com ela. Os parametros restart, hostname e name são opcionais.

 

Coloquei este exemplo no meu Github.

 

Espero ter ajudado.

 

The following two tabs change content below.
Arquiteto de Software e Desenvolvedor Backend (quase Fullstack), geralmente trabalho com C#, PowerShell, Python, Golang, bash e Unity (esse é mais por hobby). Estou sempre buscando algo novo para aprender, adicionando novas ferramentas ao meu cinto de utilidades.
Posted in Dev, Docker and tagged , , , , .