POSTGRES_USER POSTGRES_PASSWORD POSTGRES_DB env로 YugabyteDB를 시작하는 docker-compose.yaml

YugabyteDB용으로 Yugabyte에서 제공하는 Docker 이미지는 데이터베이스를 생성하고 시작하지 않습니다. 데이터베이스는 다른 목적으로 사용될 수 있기 때문입니다. 운영 데이터베이스는 여러 노드로 구성됩니다. 그러나 개발 또는 자동화된 테스트의 경우 정의된 데이터베이스, 사용자 및 비밀번호로 하나의 컨테이너를 시작하기만 하면 됩니다.

YugabyteDB는 PostgreSQL과 호환되므로 응용 프로그램을 변경하지 않고도 PostgreSQL을 YugabyteDB로 대체할 수 있습니다. PostgreSQL 이미지를 사용하면 다음 환경 변수를 사용하여 데이터베이스를 생성하고 사용자 및 비밀번호를 설정할 수 있습니다. 그리고 동일한 환경 변수를 사용하지 않는 이유는 무엇입니까?

다음은 knex.js 테스트 스위트https://github.com/knex/knex/blob/master/scripts/docker-compose.yml를 기반으로 한 예입니다.

yb-master는 이름이 yb-tserver이고 사용자/비밀번호yugabyted/docker-compose.yml인 데이터베이스로 PostgreSQL을 시작하고 이 연결이 사용 가능한 시기를 확인하기 위해 다른 컨테이너를 시작합니다.

같은 방식으로 YugabyteDB를 추가하는 방법은 다음과 같습니다.

version: '3'
services:

  yugabytedb:
    image: docker.io/yugabytedb/yugabyte:latest
    command: |
     bash -c "
     # create database and user as soon as database is up
     until [ -z "POSTGRES_USER" ] || PGPASSWORD=yugabyte bin/ysqlsh -v ON_ERROR_STOP=1 \\
      -c \"create database $${POSTGRES_DB:-$${POSTGRES_USER}} \" \\
      -c \"create user $${POSTGRES_USER} password '$${POSTGRES_PASSWORD}' \" \\
      2>/dev/null
      do
       echo \"Waiting for YugabyteDB to be up for creating user $${POSTGRES_USER}.\" ; sleep 5
      done &
     # start YugabyteDB
     bin/yugabyted start --daemon=false --tserver_flags='ysql_enable_auth=true'
     "
    environment:
      - POSTGRES_USER=testuser
      - POSTGRES_PASSWORD=knextest
      - POSTGRES_DB=knex_test
    ports:
      - 25433:5433
      - 27000:7000

  waityugabyte:
    image: postgres:13-alpine
    links:
      - yugabytedb
    depends_on:
      - yugabytedb
    entrypoint:
      - bash
      - -c
      - 'until PGPASSWORD=knextest /usr/local/bin/psql postgres://testuser@yugabytedb:5433/knex_test -c "SELECT 1"; do sleep 5; done'



YugabyteDB 데이터베이스는 knex_test로 시작되고 백그라운드 루프는 환경 변수에 따라 데이터베이스와 사용자를 생성하기 위해 연결을 시도합니다.

YugabyteBD의 기본 포트는 5433이며 기본 포트에서 PostgreSQL과 함께 시작할 수 있습니다. 포트 7000은 그래픽 콘솔입니다.

yb-master/yb-tserver 클러스터 토폴로지를 완전히 제어할 수 있는 더 복잡한 docker-compose.yaml을 원하는 경우 내 랩용으로 생성하는 방법은 다음과 같습니다. https://github.com/FranckPachot/ybdemo/tree/main/docker/yb-lab

2022년 6월 업데이트


testuser를 사용하는 다음 명령이 더 나을 것입니다.

    command: |
     bash -c '
     mkdir -p /var/ybinit
     echo "create database $${POSTGRES_DB:-$${POSTGRES_USER}}             " > /var/ybinit/01-db.sql
     echo "create user $${POSTGRES_USER} password '$${POSTGRES_PASSWORD}' " > /var/ybinit/02-usr.sql
     # start YugabyteDB
     bin/yugabyted start --daemon=false --initial_scripts_dir=/var/ybinit --tserver_flags=ysql_enable_auth=true
     '

knextest가 작동하지 않는 경우 Nakama docker-compose의 또 다른 예입니다.

좋은 웹페이지 즐겨찾기