이번에는 apache 웹 서버에 이어,
도커에서 Mysql서버를 구축해보겠습니다.
컨테이너 생성 방법은 크게 두 가지 입니다.
- Shell 명령어 이용하기
- docker-compose.yml 파일 이용하기
이번에는 먼저 첫 번째 방법인 도커파일을 작성한다음 Shell 명령어를 이용할 것이구요,
이 다음에는 두 번째 방법도 이어 올리겠습니다. ㅎㅎ
먼저 도커 허브에서 mysql을 치면 다음과 같이 볼 수 있습니다.
이거를 이용할 겁니다!
이어서 vi Dockerfile_MYSQL 명령어를 이용하여,
저는 두번째 도커파일을 작성해보겠습니다.
# Dockerfile_MYSQL
FROM mysql:5.7
ENV MYSQL_ROOT_PASSWORD=password
ENV MYSQL_DATABASE=mydb
ENV를 이용한 환경변수 설정
- 도커 이미지를 빌드할 때 사용하는 Dockerfile에 초기 환경변수를 설정할 수 있습니다.
- 설정한 환경변수는 RUN, CMD, ENTRYPOINT 명령에도 적용될 수 있습니다.
- 아래의 두 서식 중 하나로 기술할 수 있습니다.
- ENV [key][value]
- ENV [key]=[value]
저는 ENV 명령어를 이용하여, mysql root에 대한 password를 지정하고, 데이터베이스 이름도 설정하였습니다.
이어 바로 이미지를 빌드해보겠습니다.
이미지 이름은 db라 하겠습니다.
이미지 빌드하기
ubuntu@ip-172-31-38-68:~$ docker build -t db -f Dockerfile_MYSQL .
이어서 빌드한 이미지를 백그라운드에서 실행해보도록 하겠습니다.
컨테이너 이름은 db1이라고 하겠습니다.
백그라운드에서 컨테이너 실행하기
docker run -d --name db1 db
아까 만든 웹 컨테이너와 현재 만든 db1 컨테이너가 실행중임을 확인할 수 있습니다.
컨테이너 접속 그리고 mysql 서버에 접속하기
다음과 같이 공식문서에 컨테이너 bash에 접속하는 방법이 잘 나와 있습니다.
이를 이용해 저도 db1 컨테이너 내부에 접속해 쉘을 실행해보겠습니다.
여기서
ubuntu@ip-172-31-38-68:~$ docker exec -it db1 /bin/bash
이어 mysql서버에 접속해보겠습니다.
root@156dd00b2a31:/# mysql -u root -p
이어 아까 지정한 root password를 입력하면 내부 mysql 서버에 접속할 수 있게 됩니다.
이후에는 이전에 로컬 mysql에 접속했을때와 마찬가지로 똑같이 이용할 수 있습니다!
제가 mydb라고 명명했던 데이터베이스도 확인할 수 있습니다.
[참고]