AWS EC2 Docker mysql 설치
카테고리: aws
0. 사전검토
AWS의 경우 RDS를 사용해서 DB를 구성할 수 있으나, 프리티어 기간이 지나면 비용 발생한다. 단순 개발용으로 임시로 사용한다면 간단한게 Docker를 이용해서 쉽게 구성이 가능하다.
1. Docker 설치
Docker 업데이트 및 설치
sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt update
sudo apt install -y docker-ce


Docker 서비스 시작 및 자동 시작 설정
Docker가 설치되었으면, 아래 명령어로 Docker 서비스를 시작하고 자동 시작을 설정합니다.
sudo systemctl start docker
sudo systemctl enable docker
Docker 권한 설정 (선택 사항)
Docker 명령어를 실행할 때마다 sudo를 붙이지 않도록 설정하려면, 사용자 계정을 Docker 그룹에 추가합니다.
sudo usermod -aG docker $USER
설정을 적용하려면 시스템에서 로그아웃 후 다시 로그인해야 합니다.
Docker 설치 확인
Docker가 제대로 설치되었는지 확인하려면 아래 명령어로 Docker 버전을 확인합니다.
docker --version

정상적으로 설치가 완료되었는지 확인한다.
2. MySQL Docker 컨테이너 실행
MySQL Docker 이미지 다운로드
Docker Hub에서 MySQL 이미지를 다운로드하여 사용할 수 있습니다. 최신 이미지를 내려받으려면 다음 명령어를 실행합니다.
docker pull mysql:latest
MySQL Docker 컨테이너 실행
MySQL 컨테이너를 실행하려면 docker run 명령어를 사용하여 MySQL을 실행합니다. 아래는 MySQL 컨테이너를 실행하는 기본적인 명령어입니다.
docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:latest
–name: 컨테이너 이름 지정 (mysql-container)
-e MYSQL_ROOT_PASSWORD: MySQL의 root 비밀번호 설정
-d: 백그라운드 모드로 실행
mysql:latest: 사용하려는 MySQL 이미지
MySQL 컨테이너 실행 확인
MySQL 컨테이너가 실행되고 있는지 확인하려면 아래 명령어로 확인할 수 있습니다.
docker ps
sh파일을 이용한 실행
#!/bin/bash
# MySQL 컨테이너 이름, 비밀번호, 데이터 저장 경로 등을 변수로 설정
CONTAINER_NAME="mysql-container"
MYSQL_ROOT_PASSWORD="루트비번이다" # 변경하고 싶은 비밀번호로 설정
MYSQL_IMAGE="mysql:latest"
MYSQL_DATA_DIR="/path/to/mysql/data" # MySQL 데이터가 저장될 로컬 디렉토리 (필요한 경우 수정)
# 이미 컨테이너가 존재하면 중지하고 제거
docker ps -q -f name=${CONTAINER_NAME} && docker stop ${CONTAINER_NAME} && docker rm ${CONTAINER_NAME}
# MySQL 컨테이너 실행
docker run --name ${CONTAINER_NAME} \
-e MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} \
-v ${MYSQL_DATA_DIR}:/var/lib/mysql \
-e MYSQL_DATABASE=데이터베이스다. \
-e MYSQL_USER=유저다 \
-e MYSQL_PASSWORD=유저비번이다. \
-p 3306:3306 \
-d ${MYSQL_IMAGE} \
mysql:8.0
# 실행 상태 확인
if [ $? -eq 0 ]; then
echo "MySQL 컨테이너가 성공적으로 실행되었습니다."
else
echo "MySQL 컨테이너 실행에 실패했습니다."
fi
실행 중인 컨테이너를 확인한다.
3. MySQL에 연결
MySQL 클라이언트로 연결
MySQL 클라이언트를 통해 Docker에서 실행 중인 MySQL에 접속할 수 있습니다. 아래 명령어로 MySQL에 접속
docker exec -it mysql-container mysql -u root -p

그러면 비밀번호를 묻는 프롬프트가 뜨고, my-secret-pw로 설정한 비밀번호를 입력하면 MySQL에 접속된다.
데이터베이스 생성
MySQL에 접속한 후, 새 데이터베이스를 생성할 수 있습니다. 예를 들어 testdb라는 데이터베이스를 생성하려면 아래 명령어를 실행
CREATE DATABASE testdb;

DB가 정상적으로 생성이 된다.
4. 데이터 퍼시스턴스 설정 (옵션)
Docker 컨테이너가 삭제되거나 다시 시작되면 데이터가 손실되며, 이를 방지하기 위해 MySQL 데이터베이스의 데이터를 호스트 시스템에 저장하려면 볼륨을 사용해야 한다.
MySQL 컨테이너 실행 시 볼륨 마운트
MySQL 데이터를 지속적으로 저장하려면 -v 옵션을 사용하여 호스트 시스템의 디렉토리를 컨테이너에 마운트한다.
docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=my-secret-pw -v /my/local/data:/var/lib/mysql -d mysql:latest
-
/my/local/data: 호스트 시스템에 MySQL 데이터를 저장할 디렉토리
-
/var/lib/mysql: MySQL의 데이터 디렉토리
5. MySQL 컨테이너 종료 및 제거
컨테이너 종료
MySQL 컨테이너를 종료하려면 아래 명령어를 실행한다.
docker stop mysql-container
컨테이너 제거
종료된 MySQL 컨테이너를 삭제하려면 아래 명령어를 실행한다.
docker rm mysql-container
개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우
댓글 또는 메일로 알려주시면 감사하겠습니다.
댓글 남기기