>데이터 베이스 >MySQL 튜토리얼 >컨테이너 구성을 변경하지 않고 로컬 MySQL 데이터베이스를 Docker 컨테이너에 연결하는 방법은 무엇입니까?

컨테이너 구성을 변경하지 않고 로컬 MySQL 데이터베이스를 Docker 컨테이너에 연결하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-10-29 16:36:02898검색

How to Connect a Local MySQL Database to a Docker Container Without Changing Container Configuration?

로컬 MySQL 데이터베이스를 Docker 컨테이너에 연결

Dockerized 설정을 사용하여 애플리케이션을 프로덕션으로 전환할 때 컨테이너 기반 데이터베이스의 사용을 피하고 싶을 수 있습니다. 데이터베이스. 이 문서에서는 컨테이너의 데이터베이스 구성을 수정하지 않고 로컬로 호스팅된 MySQL 데이터베이스를 Docker 컨테이너 내에서 실행되는 애플리케이션에 연결하는 방법을 살펴봅니다.

docker-compose.yml 수정

제공된 docker-compose .yml 파일에는 컨테이너 내에서 MySQL 데이터베이스를 초기화하는 "app-db"라는 서비스가 포함되어 있습니다. 대신 애플리케이션을 외부 MySQL 데이터베이스에 연결하려면:

  1. docker-compose.yml 파일에서 "app-db" 서비스를 제거합니다.
  2. 다음에 "environment" 섹션을 추가합니다. 데이터베이스 연결 세부 정보가 지정된 "web-app" 서비스:
<code class="yaml">version: '3'
services:
  web-app:
    build:
      context: .
      dockerfile: web-app/Dockerfile
    ports:
      - 8080:8080
    environment:
      - MYSQL_HOST=host.docker.internal
      - MYSQL_PORT=3306
      - MYSQL_USER=username
      - MYSQL_PASSWORD=password
      - MYSQL_DATABASE=database_name</code>

호스트 확인 보장

Linux 시스템의 경우 Docker 컨테이너는 호스트의 네트워크 구성에서 격리됩니다. . 웹 애플리케이션이 host.docker.internal 주소를 확인하도록 허용하려면 "--add-hosthost.docker.internal:host-gateway" 매개변수를 사용하여 컨테이너를 시작해야 합니다.

<code class="sh">docker run --add-host host.docker.internal:host-gateway ...</code>

이것은 매개변수는 컨테이너가 호스트의 IP 주소에 대해 host.docker.internal을 확인할 수 있도록 보장합니다.

외부 데이터베이스에 연결

수정된 docker-compose.yml 및 컨테이너 구성을 사용하면 웹 애플리케이션은 환경 변수에 지정된 대로 로컬로 호스팅되는 MySQL 데이터베이스에 연결할 수 있어야 합니다.

위 내용은 컨테이너 구성을 변경하지 않고 로컬 MySQL 데이터베이스를 Docker 컨테이너에 연결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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