>백엔드 개발 >Golang >Docker Compose 및 별도의 데이터베이스 컨테이너를 사용하여 Golang-Migrate를 실행하는 방법은 무엇입니까?

Docker Compose 및 별도의 데이터베이스 컨테이너를 사용하여 Golang-Migrate를 실행하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-06 13:06:14574검색

How to Run Golang-Migrate with Docker Compose and a Separate Database Container?

Docker Compose로 Golang-Migrate 실행

Golang- migration의 문서는 특정 디렉터리에서 모든 마이그레이션을 실행하기 위한 명령을 제공합니다.

docker run -v {{ migration dir }}:/migrations --network host migrate/migrate -path=/migrations/ -database postgres://localhost:5432/database up 2

그러나 이 명령은 docker-compose 구문과 호환되지 않습니다. 이 문서에서는 새 구문에 맞게 명령을 수정하고 다른 컨테이너에서 실행 중인 데이터베이스에 연결하는 방법을 보여줍니다.

Docker-Compose 통합

golang- migration을 docker-compose와 통합하려면, docker-compose.yml 파일에 다음을 추가합니다.

db:
    image: postgres
    networks:
        new:
            aliases:
                - database
    environment:
        POSTGRES_DB: mydbname
        POSTGRES_USER: mydbuser
        POSTGRES_PASSWORD: mydbpwd
    ports:
        - "5432"
migrate:
    image: migrate/migrate
    networks:
        - new
    volumes:
        - .:/migrations
    command: ["-path", "/migrations", "-database",  "postgres://mydbuser:mydbpwd@database:5432/mydbname?sslmode=disable", "up", "3"]
    links: 
        - db
networks:
    new:

이 구성은 "new"라는 네트워크를 생성하고 "db" 및 "마이그레이션" 서비스. "db" 서비스는 PostgreSQL 데이터베이스에 필요한 환경 변수로 정의됩니다.

다른 컨테이너의 데이터베이스에 연결

다른 컨테이너에서 실행 중인 데이터베이스에 연결하려면 연결 문자열을 수정하세요. "마이그레이션" 서비스의 "명령" 속성:

postgres://mydbuser:mydbpwd@database:5432/mydbname?sslmode=disable

이와 관련하여 문자열:

  • mydbuser는 PostgreSQL 데이터베이스의 사용자 이름입니다.
  • mydbpwd는 PostgreSQL 데이터베이스의 비밀번호입니다.
  • database는 "db" 서비스에 정의된 별칭입니다.
  • 5432는 PostgreSQL의 포트 번호입니다. Database
  • mydbname은 PostgreSQL 데이터베이스의 이름입니다

"database" 별칭을 사용하면 마치 localhost에서 실행되는 것처럼 "db" 서비스에 연결할 수 있습니다.

이러한 수정을 통해 docker-compose를 사용하여 golang- migration을 성공적으로 실행하고 다른 컨테이너의 데이터베이스에 연결할 수 있습니다.

위 내용은 Docker Compose 및 별도의 데이터베이스 컨테이너를 사용하여 Golang-Migrate를 실행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.