저는 도커를 배우고 있어요. 카운터 애플리케이션의 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粉4753151422024-03-20 14:54:05
각 애플리케이션과 해당 데이터베이스에 대해 별도의 Docker Compose를 사용하는 것이 좋습니다.
두 개의 애플리케이션에 대해 하나의 Docker Compose만 사용하려는 경우 노출된 스키마와 포트가 서로 다른 mysql에 대해 두 개의 별도 서비스를 정의하고 애플리케이션에서 각각을 참조할 수 있습니다.
이것은 두 가지 서비스가 정의된 동일한 애플리케이션입니다.
또한:
동일한 앱을 언급하셨는데 다음을 의미하는 것 같습니다.
localhost:9000/index
그리고
localhost:9001/index