"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 프로젝트의 Docker 컨테이너에서 MySQL 사용

프로젝트의 Docker 컨테이너에서 MySQL 사용

2024-08-18에 게시됨
검색:124

Using MySQL in a Docker Container for your Projects

나는 호스트 시스템을 깨끗하게 유지해야 한다고 굳게 믿습니다. Docker 컨테이너는 이에 대한 완벽한 솔루션입니다. 당신이 Node/Express 백엔드와 DB 요구 사항에 맞는 MySQL 서버를 갖춘 React 앱을 작업하고 있다고 가정해 보겠습니다. 일반적으로 호스트 시스템에 mysql을 설치하고, 데이터베이스를 생성하고, 비밀번호를 사용하여 사용자를 생성하고, 해당 데이터베이스로 작업할 수 있는 사용자 권한을 부여합니다.

모든 단일 프로젝트에 대해 매번 이를 구성하는 데 시간을 낭비하는 대신 Docker 이미지를 사용하여 MySQL 데이터베이스 서버를 생성하고 필요한 모든 설정을 통해 몇 초 안에 준비하고 실행합니다. 필요합니다.

저를 믿으십시오. 이 경로를 사용하여 작업 흐름을 파악하면 결코 이전 방식으로 돌아가지 않을 것입니다. 그래서 여기에 제가 진행하는 방법과 매우 간단하고 기본적인 방법이 있습니다.

Docker에 대한 경험이 있고 이 튜토리얼을 건너뛰고 TLDR 버전으로 직접 시작하고 싶다면 이 Gist가 훨씬 더 빠를 것입니다.

우리에게 무엇이 필요합니까?

Docker를 사용하려면 Docker가 필요해요! 여기서는 Docker 설치에 대해 자세히 설명하지 않겠습니다. CLI가 익숙하지 않거나 Windows/MacOS를 사용하는 경우 Docker Desktop을 선택하세요. Docker Desktop이 뒤에서 모든 무거운 작업을 대신해 드립니다.

Linux 사용자는 마음에 들지 않으면 Docker Compose 플러그인이나 Docker Desktop을 사용하여 Docker 엔진을 설치할 수도 있습니다.

일반적으로 우리가 사용할 MySQL 공식 이미지와 같은 공개 이미지를 다운로드하기 위해 Docker Hub에 계정이 필요하지 않습니다.

이제 어떡하지?

이 작업을 수행하는 방법에는 두 가지가 있습니다.

Docker Run 사용(권장하지 않음)

docker run 명령을 사용하여 컨테이너를 직접 실행하려면 먼저 시스템에 MySQL 이미지를 다운로드해야 합니다. 이미지를 시스템으로 가져오려면 다음 명령을 사용하면 됩니다.

docker pull mysql

참고: 특정 버전의 MySQL이 필요하지 않은 경우 이 명령은 최신 버전(최신 태그가 있는 버전)을 다운로드합니다. 필요한 경우 Docker Hub에서 더 많은 태그와 버전을 탐색할 수 있습니다.

Docker 다운로드가 완료되면 다음과 같이 다운로드한 이미지를 볼 수 있습니다.

docker image ls

이제 컨테이너를 실행하려면 docker run 명령을 사용하여 많은 플래그를 추가해야 합니다. 이 링크를 방문하면 모든 옵션을 확인할 수 있습니다. 또한 일부 플래그가 누락되면 오류가 발생하거나 사용할 수 없는 컨테이너가 시작될 수 있으므로 추가해야 하는 모든 플래그를 기억해야 합니다.

게다가 컨테이너를 실행하려고 할 때마다 터미널 기록에서 이 긴 명령을 찾아내거나 다시 입력해야 합니다. 그럴 필요는 없습니다.

이것이 내가 이 접근 방식을 권장하지 않는 이유입니다. 더 좋은 방법이 있습니다.

도커 작성

컨테이너를 시작하는 동안 필요한 사항을 Docker에 알려주는 Docker Compose 파일을 생성하겠습니다. 모든 것이 파일에 배치되면 컨테이너를 실행하는 것은 매우 쉽습니다.

참고: 어떤 이름으로든 작성 파일을 만들 수 있습니다. 자신의 이름을 사용하거나 작성 파일을 다른 폴더에 저장하는 경우 -f 플래그를 제공해야 작동합니다. 또는 파일과 동일한 폴더에서 명령을 실행하는 경우 파일 이름을 docker-compose.yaml로 지정할 수 있습니다.

Docker Compose 파일은 YAML 파일입니다. 우리의 모습은 다음과 같습니다:

# This Docker Compose YAML deploys a MySQL database
services:
  container-name:

    image: mysql # Official MySQL image from Docker Hub
    restart: always

    environment:
      # Note - Root password is mandatory for the container to run and grant privileges to our User.
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}

      MYSQL_DATABASE: ${MYSQL_DATABASE} # Same name as used in your project

      # DB User Details
      MYSQL_USER: ${MYSQL_USER}
      MYSQL_PASSWORD: ${MYSQL_PASSWORD}

    ports:
      # Adjust this port as per your needs -> :
      - 3308:3306 # DB is available at localhost:3308 on the host.

    volumes:
      - ./volumes/db-mnt:/var/lib/mysql

이 파일은 처음에 언급한 Gist에서도 사용할 수 있습니다.

알아두어야 할 중요 사항

  1. 포트 매핑: 첫 번째 포트는 두 번째 포트(Docker 컨테이너 내부 포트)에 매핑되는 호스트 포트(시스템)입니다. 이는 위의 예에서 localhost:3308의 데이터베이스에 액세스할 수 있음을 의미합니다. 수행 중인 작업을 모르는 경우가 아니면 두 번째 포트를 3306으로 유지하십시오. 이는 MySQL의 기본 포트입니다.
  2. 볼륨 바인딩 마운트: 데이터베이스 내부에 데이터를 유지하기 위해 로컬 볼륨을 컨테이너에 마운트하고 있습니다. 이렇게 하면 필요한 경우 쉽게 백업하고 이동할 수 있습니다. Docker가 자체 볼륨을 관리하고 호스트 시스템에 정기적인 백업을 생성하도록 할 수도 있습니다. #### 환경 파일 컨테이너를 생성하는 동안 Docker에 필요한 자격 증명을 제공하기 위해 React 또는 백엔드 앱에서와 마찬가지로 .env 파일을 생성합니다.

Compose 파일이 있는 동일한 폴더에 이 파일을 생성하거나 원하는 위치에 생성할 수 있지만 docker-compose를 호출하는 동안 경로를 제공해야 합니다.

# Content of the Environment Variables file
MYSQL_ROOT_PASSWORD=rootpassword
MYSQL_DATABASE=nameofdatabase
MYSQL_USER=dbusername
MYSQL_PASSWORD=dbuserpassword

이 모든 것이 준비되면 간단한 명령 하나만 사용하면 데이터베이스가 작동되어 우리를 기다릴 준비가 됩니다.

docker-compose up -d

이제 원하는 방법을 사용하여 데이터베이스에 연결할 준비가 되었습니다.

그리고 작성 파일에서 실행되도록 컨테이너를 구성했으므로 저장소의 git 시스템에 안전하게 백업할 수 있습니다. .env 파일을 .gitignore로 설정했는지 확인하세요.

릴리스 선언문 이 기사는 https://dev.to/nyukeit/using-mysql-in-a-docker-container-for-your-projects-4ham?1에 복제되어 있습니다. 침해가 있는 경우에는 [email protected]으로 문의하시기 바랍니다. 그것을 삭제하려면
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3