BD 레스토랑 - PostgreSQL + Docker

Nesse artigo fari uma abordagem sobre uma forma que encontrei para restauar uma base de dados PostgreSQL em um container Docker.

Atualmente estou estagiando e para facilitar a configuração do meuambiente de desenvolvimento, padronizando com o do restante da equipment da empresa, além de desenvolver meu conhecimento com containers (comecei os ar estudos laterolpratic e que que que rores, comecei os a estudos lastemente etra que) 컨테이너 도커.

주변 환경 준비



Primeiro, criei o arquivo docker-compose.yml para facilitar a definição e a execução dos contêineres.

version: '3'
services: 
  postgres:
    build: .
    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
    ports: 
      - "5432:5432"
    volumes:
      - ./pg-data:/var/lib/postgresql/data
      - ./backups:/var/lib/postgresql/backups
    networks:
      - postgres-network

  pgadmin:
    image: dpage/pgadmin4
    environment:
      PGADMIN_DEFAULT_EMAIL: "[email protected]"
      PGADMIN_DEFAULT_PASSWORD: "admin!"
    ports:
      - "16543:80"
    depends_on:
      - postgres
    networks:
      - postgres-network

networks: 
  postgres-network:
    driver: bridge


No meu caso, tive alguns problemas com a codificação do SGBD e para resolvê-lo, tive que especificar para o container PostgreSQL a linguagem e o encoding que seriam utilizados.

FROM postgres:12

RUN localedef -i pt_BR -c -f UTF-8 -A /usr/share/locale/locale.alias pt_BR.utf-8
ENV LANG pt_BR.UTF-8 



Esses arquivos entregam uma configuração bem simples para o banco de dados PostgreSQL 및 PG Admin, entretanto, o que precisa-se ser destacado são dois volume usados ​​pelo PostgreSQL, sendo eles:
  • pg-data: 볼륨 dedicado para a persistenceência dos dados geridos pelo BD, mesmo que os serviços sejam reiniciados.
  • 백업: 볼륨 dedicado para o armazenamento dos arquivos que serão usados ​​durante a restauração.

  • Para iniciar os serviços necessários, dentro do diretório do arquivo docker-compose.yml 코만도 실행:

    docker-compose up -d 
    


    Executando 레스토랑



    Com o ambient criado e executando, para dar início à restauração é necessário deixar os arquivos de restauração disponíveis para o container do PostgreSQL, para isso, copy o arquivo que de será usado na restauração 파스타

    Agora podemos acessar o container de forma interativa, para executarmos os comandos para a restauração.

    docker exec -it <nome_container> /bin/bash
    


    컨테이너는 PostgreSQL을 수행하고,/var/lib/postgresql/에 있는 파스타 로컬라이제다에 액세스하고, OS 백업을 관리해야 합니다.

    cd /var/lib/postgresql/
    


    A restauração do diretório acontecerá em duas etapas, agora dentro do diretório específico do PostgreSQL, podemos iniciar a restauração com o seguinte comando.


    Restaurando o 스키마



    pg_restore 
      --no-owner -U postgres 
      --dbname= --create 
      --verbose -c 
      --schema-only backups/<nome_arquivo>.pgdump
    


    Esse comando com várias flags, que são explicadas detalhadamente neste link , 기본 사항 criará um novo banco de dados e em seguida, fará a importação apenas do schema, deixando os dados para o proximo passo.


    레스토랑 os 다도스

    Agora que já temos todo a esttrutura do banco de dados, precisamos da parte principal, os dados. Usaremos o mesmo comando para importar os dados, entretanto com algumas opções diferentes.

    pg_restore 
      --no-owner -U postgres 
      --dbname=<nome_bd> 
      --verbose --data-only 
      --superuser=postgres
      --disable-triggers backups/<nome_arquivo>.pgdump
    


    Com esse comando apenas dados serão importados para dentro do bd que foi especificado no comando. Um ponto que vale ser destacado trata-se da opção --disable-triggers, que desabilitará a checagem de integridade dos registros, algo que não é muito importante na restauração de um banco de dados, pro que provavelmente já verificou a integridade desses dados, o que nos livra de vários erros, pois durante o processo, pode-se haver a Referência de dados que ainda não foram restaurados.

    결론



    Pronto, seguindo esses passos você terá restaurado uma base de dados no PostgreSQL rodando com em um container. Essa pode não ser abordagem perfeita, levando em 고려사상 minha inexperiência utilizando Docker, porém funcionou muito bem para o meu cenário e pode ajudar outras pessoas. Destaco também que esseambiente especifico para o desenvolvimento. Caso seja preciso, você pode encontrar o repositório completo desse tutorial aqui .

    P.S.: Esse é o meu Primeiro artigo por aqui, gostei bastante de plataforma e estou aberto para sugestões e dicas, tanto na escrita quanto nas tecnologias presentes nesse artigo.

    좋은 웹페이지 즐겨찾기