게으름을 위한 부지런한 게으름뱅리' 블로그

[Docker] Docker로 mysql 실행 및 데이터 공유 본문

IT/Docker

[Docker] Docker로 mysql 실행 및 데이터 공유

LazismLee 2024. 7. 7. 01:05
반응형

MySQL 컨테이너 실행

MySQL 공식 이미지를 사용하여 컨테이너를 실행합니다. 아래 명령어를 사용합니다

docker run -d \
  --name mysql-container \
  -e MYSQL_ROOT_PASSWORD=<your-password> \
  -e MYSQL_DATABASE=<your-database> \
  -e MYSQL_USER=<your-username> \
  -e MYSQL_PASSWORD=<your-password> \
  -v mysql-data:/var/lib/mysql \
  -p 3306:3306 \
  mysql:latest

 

  • -d: 컨테이너를 백그라운드에서 실행합니다.
  • --name mysql-container: 컨테이너의 이름을 지정합니다. 원하는 이름으로 변경 가능합니다.
  • -e MYSQL_ROOT_PASSWORD: MySQL root 사용자의 비밀번호를 설정합니다. <your-password>에 실제 비밀번호를 입력합니다.
  • -e MYSQL_DATABASE: MySQL에 생성할 데이터베이스의 이름을 지정합니다. <your-database>에 원하는 데이터베이스 이름을 입력합니다.
  • -e MYSQL_USER 및 -e MYSQL_PASSWORD: 새로운 MySQL 사용자를 생성하려면 이 환경 변수를 사용하여 사용자 이름과 비밀번호를 설정합니다.
  • -v mysql-data:/var/lib/mysql: MySQL 데이터를 저장할 Docker 볼륨을 생성합니다. 이는 데이터를 영구적으로 저장하기 위한 중요한 부분입니다.
  • -p 3306:3306: 호스트와 컨테이너의 포트를 매핑합니다. MySQL은 기본적으로 3306 포트를 사용합니다.

MySQL 컨테이너 접속

MySQL 컨테이너에 접속하여 데이터베이스를 관리하려면 다음 명령어를 사용합니다:

docker exec -it mysql-container mysql -u root -p

 

위 명령어를 실행하면 비밀번호를 입력하라는 메시지가 나타납니다. 위에서 설정한 비밀번호를 입력하면 MySQL에 접속할 수 있습니다.

 

 

데이터베이스 사용

MySQL에 접속한 후에는 SQL 쿼리를 사용하여 데이터베이스를 관리할 수 있습니다. 예를 들어, 새로운 테이블을 생성하거나 데이터를 삽입할 수 있습니다.

 

MySQL 데이터베이스 영구 저장 확인

MySQL 데이터는 mysql-data라는 이름의 볼륨에 저장됩니다. Docker 볼륨은 컨테이너가 삭제되어도 데이터가 유지됩니다. 따라서 MySQL 컨테이너를 다시 시작하거나 업그레이드해도 데이터가 보존됩니다.

 

Docker MySQL 실행 및 SQL 파일 자동 import 설정

MySQL 컨테이너 실행 및 초기 설정

먼저 MySQL 컨테이너를 실행하고 초기 설정을 수행합니다. 아래 명령어에서 mysql-container는 컨테이너의 이름입니다. MySQL 루트 비밀번호와 데이터베이스 이름, 사용자 등을 지정할 수 있습니다.

 

docker run -d \
  --name mysql-container \
  -e MYSQL_ROOT_PASSWORD=<your-password> \
  -e MYSQL_DATABASE=<your-database> \
  -e MYSQL_USER=<your-username> \
  -e MYSQL_PASSWORD=<your-password> \
  -p 3306:3306 \
  mysql:latest

 

  • -e MYSQL_ROOT_PASSWORD: MySQL root 사용자의 비밀번호를 설정합니다.
  • -e MYSQL_DATABASE: MySQL에 생성할 초기 데이터베이스의 이름을 지정합니다.
  • -e MYSQL_USER 및 -e MYSQL_PASSWORD: 새로운 MySQL 사용자를 생성하려면 이 환경 변수를 사용하여 사용자 이름과 비밀번호를 설정합니다.
  • -p 3306:3306: 호스트와 컨테이너의 포트를 매핑합니다. MySQL은 기본적으로 3306 포트를 사용합니다.

SQL 파일 준비

SQL 파일을 준비하여 MySQL 초기화 스크립트를 작성합니다. 예를 들어, init.sql이라는 이름의 파일을 작성합니다. 이 파일에는 데이터베이스 스키마를 정의하거나 초기 데이터를 추가하는 SQL 명령어를 포함할 수 있습니다

 

예시 init.sql

CREATE TABLE IF NOT EXISTS users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL
);

INSERT INTO users (username, email) VALUES
    ('john_doe', 'john.doe@example.com'),
    ('jane_smith', 'jane.smith@example.com');

 

 

SQL 파일을 Docker 컨테이너에 자동으로 import

MySQL 컨테이너가 시작될 때 SQL 파일을 자동으로 import하려면 다음과 같이 -v 옵션을 사용하여 SQL 파일을 컨테이너에 마운트하고, docker-entrypoint-initdb.d 디렉토리에 넣습니다. Docker는 이 디렉토리에 있는 SQL 파일을 자동으로 실행합니다.

docker run -d \
  --name mysql-container \
  -e MYSQL_ROOT_PASSWORD=<your-password> \
  -e MYSQL_DATABASE=<your-database> \
  -e MYSQL_USER=<your-username> \
  -e MYSQL_PASSWORD=<your-password> \
  -v /path/to/init.sql:/docker-entrypoint-initdb.d/init.sql \
  -p 3306:3306 \
  mysql:latest

 

-v /path/to/init.sql:/docker-entrypoint-initdb.d/init.sql: 호스트 시스템의 init.sql 파일을 컨테이너의 /docker-entrypoint-initdb.d/init.sql 경로에 마운트합니다. Docker는 이 경로에 있는 SQL 파일을 초기화 시점에 자동으로 실행합니다.

 

주의사항

  • SQL 파일에 있는 명령어는 Docker 컨테이너가 시작될 때 한 번 실행됩니다. 초기 설정 스크립트는 docker-entrypoint-initdb.d 디렉토리에 .sql, .sql.gz, 또는 .sh 확장자로 저장되어야 합니다.
  • SQL 파일에 오류가 있을 경우, Docker는 오류 메시지를 출력하고 초기화 작업을 중지할 수 있습니다.
  • 보안을 위해 비밀번호와 같은 중요한 정보는 환경 변수나 보안 관리 도구를 사용하여 안전하게 관리해야 합니다.
  • MySQL root 사용자의 비밀번호를 반드시 안전하게 관리하십시오.
  • 데이터베이스 및 사용자의 이름과 비밀번호는 보안을 고려하여 설정하세요.
  • 데이터베이스가 중요한 경우 정기적으로 백업을 수행하십시오.
반응형
Comments