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

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

Overview

Bem-vindos, entusiastas de tecnologia e aficionados por Raspberry Pi! Hoje vamos mergulhar no universo Docker e PostgreSQL para lhes mostrar um passo a passo de como preparar uma imagem Docker com dados pré-carregados. Ideal para projetos que necessitam de um setup rápido e eficiente, essa abordagem é perfeita até mesmo para aqueles que utilizam sistemas de 32 bits. Preparem-se para explorar a simplicidade, a flexibilidade e o poder dessa combinação!

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.