docker-compose를 사용한 Postgres 환경
Wikipedia 정의를 요약하면 환경은 소프트웨어 솔루션을 실행할 수 있는 리소스 집합입니다. 일반적으로 각각 특정 목표를 가진 많은 환경을 가질 수 있습니다. 예를 들어 개발(dev), 시스템 통합 테스트(sit), 엔드 투 엔드 테스트(e2e), 사용자 수용 테스트(uat) 및 프로덕션(prod). 이들 모두는 서로 완전히 격리되어야 합니다. 예를 들어 sit의 프런트 엔드가 e2e의 데이터베이스에 연결할 수 없도록 해야 합니다. 그러기 위해서는 네트워크 시스템과 스토리지 시스템이 우발적으로 발생하더라도 겹치지 않도록 설계해야 하고 환경이 많을 경우 어려운 작업이 될 수 있습니다.
Docker-compose는 솔루션을 실행하기 위한 모든 컴퓨팅 리소스뿐만 아니라 필요한 격리를 보장할 준비가 된 네트워킹 및 스토리지와 같은 인프라 리소스를 생성하는 환경을 시작하는 훌륭한 도구입니다. 이를 증명하기 위해 다음을 기반으로 솔루션을 시작할 수 있는 docker-compose yaml 파일을 작성했습니다.
Postgres , 데이터베이스 서버로
Pgadmin , postgres 관리 도구로
NGinx , 리버스 프록시
다음으로 일부 환경 매개변수가 포함된 .env 속성 파일을 사용하여 작성기 yaml을 매개변수화했습니다.
ENV_NAME=<<environment-name>>
NGINX_RELEASE=1.21
NGINX_HOSTPORT=8081
POSTGRES_RELEASE=12
POSTGRES_USER=<<postgres-user>>
POSTGRES_PASSWORD=<<postgres-password>>
PGADMIN_RELEASE=latest
PGADMIN_EMAIL=<<pgadmin-user>>
PGADMIN_PASSWORD=<<pgadmin-password>>
그 중 가장 중요한 것은 네트워크, 볼륨 및 컨테이너의 범위를 식별하는 데 사용되는 첫 번째 ENV_NAME입니다. 사용 방법의 예는 다음과 같습니다.
# Use postgres/example user/password credentials
version: '3.7'
services:
proxy:
image: nginx:${NGINX_RELEASE}
container_name: ${ENV_NAME}_nginx
restart: unless-stopped
environment:
NGINX_HOST: ${ENV_NAME}
NGINX_PORT: ${NGINX_HOSTPORT}
networks:
- frontend
volumes:
- ./config/templates:/etc/nginx/templates
- ./config/certs:/etc/nginx/certs
ports:
- ${NGINX_HOSTPORT}:${NGINX_HOSTPORT}
- 443:443
pgadmin:
image: dpage/pgadmin4:${PGADMIN_RELEASE}
container_name: ${ENV_NAME}_pgadmin
depends_on:
- postgres
environment:
PGADMIN_DEFAULT_EMAIL: ${PGADMIN_EMAIL}
PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_PASSWORD}
networks:
- frontend
- backend
volumes:
- pga_data:/var/lib/pgadmin
postgres:
image: postgres:${POSTGRES_RELEASE}
container_name: ${ENV_NAME}_postgres
restart: always
environment:
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- ps_data:/var/lib/postgresql/data
networks:
- backend
volumes:
ps_data:
name: ${ENV_NAME}_postgres
pga_data:
name: ${ENV_NAME}_pgadmin
networks:
frontend:
name: ${ENV_NAME}_frontend
backend:
name: ${ENV_NAME}_backend
예를 들어 ENV_NAME이 demo_dev이면 다음과 같은 결과가 나타납니다.
네트워크에서 볼 수 있듯이 볼륨과 컨테이너 이름이 사용자 정의되었으므로 다른 환경 매개변수로 작성기를 다시 시작하면 이전 환경과 분리된 새로운 환경을 갖게 됩니다.
코드는 내github 저장소에서 사용할 수 있습니다.
Reference
이 문제에 관하여(docker-compose를 사용한 Postgres 환경), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/antdimot/postgres-environment-with-docker-compose-17pl텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)