찾다

 >  Q&A  >  본문

DockerCompose 파일에서 데이터베이스 스키마를 공유하는 방법은 무엇입니까?

저는 도커를 배우고 있어요. 카운터 애플리케이션의 Dockerfile에서 이미지를 작성 중입니다. 그리고 데이터베이스로는 mysql을 사용합니다. DockerCompose 파일은 동일한 애플리케이션 이미지의 데이터베이스 1개와 컨테이너 2개를 사용합니다. MySQL 데이터베이스에는 두 가지 모드가 있습니다. 내 목표는 서로 다른 포트(예: 9000 및 9001)를 사용하여 자체 스키마를 갖는 별도의 애플리케이션 서비스를 갖는 것입니다. localhost:9000/index를 호출하면 첫 번째 카운터가 표시되고, localhost:9000/index를 호출하면 두 번째 카운터가 표시됩니다.

하지만 문제는 둘 다 첫 번째 모드를 사용하므로 결과가 동일한 카운터라는 것입니다. 아키텍처를 분리하는 방법은 무엇입니까?

문서 작성->

으아악

application.yaml->

version: '3.1'

services:

  mysql:
    image: mysql
    restart: always
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: password
    volumes:
      - mysql_data:/var/lib/mysql


  hello-docker:
    image: hello-docker:0.0.2
    restart: always
    environment:
      DB_CONNECTION_IP: mysql
      DB_SCHEMA_NAME: hello-counter
    ports:
        - "9000:9000"
    volumes:
        - mysql_data:/var/lib/mysql

  hello-docker2:
    image: hello-docker:0.0.2
    restart: always
    environment:
      DB_CONNECTION_IP: mysql
      DB_SCHEMA_NAME: hello_counter2
    ports:
      - "9001:9000"

volumes:
  mysql_data:

P粉032977207P粉032977207256일 전283

모든 응답(1)나는 대답할 것이다

  • P粉475315142

    P粉4753151422024-03-20 14:54:05

    각 애플리케이션과 해당 데이터베이스에 대해 별도의 Docker Compose를 사용하는 것이 좋습니다.

    두 개의 애플리케이션에 대해 하나의 Docker Compose만 사용하려는 경우 노출된 스키마와 포트가 서로 다른 mysql에 대해 두 개의 별도 서비스를 정의하고 애플리케이션에서 각각을 참조할 수 있습니다.

    이것은 두 가지 서비스가 정의된 동일한 애플리케이션입니다.

    또한:

    동일한 앱을 언급하셨는데 다음을 의미하는 것 같습니다.

    localhost:9000/index

    그리고

    localhost:9001/index

    회신하다
    0
  • 취소회신하다