프로젝트에 Docker가 포함된 Postgres 데이터베이스 추가
컨테이너를 회전시키고 앱을 개발한 다음 컨테이너를 해체합니다. Postgres 데이터베이스는 내 로컬 시스템을 어지럽히지 않으며 다른 시스템에서 쉽게 설정할 수 있습니다.
Docker Compose를 사용하여 설정을 구성하고 소스 제어에 커밋할 수 있습니다.
이 블로그 게시물에서는 Docker 및 Docker Compose를 사용하여 데이터베이스를 시작하고 실행하는 방법을 보여 드리겠습니다.
전제 조건:
Docker Compose를 사용하는 Postgres
Docker Compose를 사용하면 사람이 읽기 쉽고 Docker에 대한 지침 역할을 하는 yaml 파일을 작성할 수 있습니다.
응용 프로그램의 프로젝트 폴더로 이동하여 새 파일을 만듭니다.
docker-compose.yaml
.version: '2.4'
services:
db:
build:
context: ./db
dockerfile: Dockerfile
ports:
- 5432:5432
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
volumes:
- db-data:/var/lib/postgresql/data:delegated
volumes:
db-data:
db
라는 새 서비스를 만듭니다(원하는 대로 호출할 수 있음).컨테이너는 포트 5432에서 실행됩니다. Docker는 해당 포트를
localhost:5432
에 노출합니다.컨테이너 내부의 포트를 호스트 머신(개발 컴퓨터)에 매핑해야 합니다.
그렇지 않으면 앱이 Postgres 데이터베이스에 연결할 수 없습니다.
또한 사용자 및 암호에 대해 일부 환경 변수를 사용합니다.
볼륨이 무슨 상관이야?
Volumes are the preferred mechanism for persisting data generated by and used by Docker containers. 1
docker-compose.yml
파일에 볼륨을 지정하면 Compose가 볼륨을 보존합니다.When
docker-compose up
runs, if it finds any containers from previous runs, it copies the volumes from the old container to the new container. This process ensures that any data you’ve created in volumes isn’t lost. 2
빈 최상위 항목은 유틸리티가 컴퓨터의 기본 드라이버를 사용해야 함을 Compose에 알려줍니다.
volumes:
db-data:
Dockerfile 만들기
우리는 Compose에게
db
디렉토리에 Dockerfile이 있을 것이라고 말했습니다.폴더 구조 예:
.
├── db
│ ├── init.sql
│ └── Dockerfile
├── docker-compose.yml
└── app
폴더 구조가 다른 경우
docker-compose.yml
의 context
항목을 조정해야 합니다. 현재 Docker는 루트 폴더에서 db
디렉터리를 찾습니다.services:
db:
build:
context: ./db
db
디렉토리와 Dockerfile
생성:# pull official base image
FROM postgres:12.2-alpine
# run init.sql
ADD init.sql /docker-entrypoint-initdb.d
(대체 이미지는 Docker Hub 참조)
이제
init.sql
를 사용하여 데이터베이스를 채울 수 있습니다. task_management
라는 새 데이터베이스를 생성하는 간단한 스크립트를 사용합니다.init.sql
:CREATE DATABASE task_management;
내가 선택한 언어로 내 앱 내에서 스키마 생성을 관리합니다. 예를 들어 사용하는 웹 프레임워크에 따라 TypeORM(TypeScript) 또는 SQLAlchemy(Python)를 사용합니다.
컨테이너 명령
이제 데이터베이스를 실행할 수 있습니다. 루트 디렉터리 내에서 터미널을 열고 다음을 입력합니다.
docker-compose up -d
이 명령은 분리 모드(백그라운드에서)에서 컨테이너를 시작합니다.
명령줄을 사용하여 데이터베이스에 연결하려는 경우:
docker-compose exec db psql -U postgres -d task_management
docker-compose exec
: 실행 중인 컨테이너 내에서 명령 실행db
: 서비스 이름(docker-compose.yml
의 구성 참조) psql
: 실행할 터미널 명령, psql
참조-U postgres
: 사용자 이름은 postgres입니다 -d task_management
: task_management
라는 데이터베이스에 연결또는 pgAdmin 또는 DBeaver 과 같은 GUI 도구를 사용할 수 있습니다.
요약
Postgres 컨테이너를 생성할 Docker 및 Docker Compose에 대한 간단한 구성을 생성하는 방법을 살펴보았습니다.
이제 애플리케이션의 로컬 개발을 위해 데이터베이스를 사용할 수 있습니다.
추가 읽기
Database in a Docker container — how to start and what’s it about Wojciech Krzywiec
docs.docker.com ↩
docs.docker.com ↩
Reference
이 문제에 관하여(프로젝트에 Docker가 포함된 Postgres 데이터베이스 추가), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/sophiabrandt/add-a-postgres-database-with-docker-to-your-project-48m7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)