DockerCompose 파일에서 데이터베이스 스키마를 공유하는 방법은 무엇입니까?
P粉032977207
P粉032977207 2024-03-19 21:28:55
0
1
280

저는 도커를 배우고 있어요. 카운터 애플리케이션의 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粉032977207
P粉032977207

모든 응답(1)
P粉475315142

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

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

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

또한:

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

localhost:9000/index

그리고

localhost:9001/index

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿