4장. 컨테이너 애플리케이션 구축

기운찬곰·2020년 8월 31일
0

Docker

목록 보기
4/13
post-thumbnail

시작하기에 앞서서...

이 포스팅은 위키북스의 시작하세요! 도커/쿠버네티스 를 보고 공부한 내용을 바탕으로 하고 있습니다. (문제가 된다면 비공개 처리하겠습니다😂😂)


MySQL 컨테이너 생성

컨테이너 하나에는 하나의 애플리케이션만 동작시키도록 하는 것이 좋다. 이번에는 MySQL 컨테이너를 띄어보도록 하겠다.

$ sudo docker run -d \
--name wordpressdb \
-e MYSQL_ROOT_PASSWORD=password \
-e MYSQL_DATABASE=wordpress \
mysql:5.7

-d option

이전까지는 -it옵션을 사용해서 컨테이너 안에 접속한 다음 상호작용 할 수 있었다. 하지만, MySQL은 하나의 터미널을 차지하는 mysqld가 실행되므로 -it 옵션을 사용해도 상호작용 할 수 없다. 대신 실행되는 로그만 볼 수 있다.

그래서 -d 옵션을 통해 컨테이너가 백그라운드에서 동작하도록 하는 것이다. 만약 ubuntu에서 -it 대신 -d를 사용한다면 컨테이너 내부에 터미널을 차지하는 포그라운드로써 동작하는 프로그램이 없으므로 컨테이너는 시작되지 않는다.

그렇다고 mysql 컨테이너에 접속할 수 있는 방법이 없는건 아니다. $ sudo docker exec -it wordpressdb /bin/bash를 사용하면 배시 셸 프로세스를 실행하고 사용할 수 있다.

-e option

컨테이너 내부의 환경변수를 설정하는 옵션이다. 컨테이너 내부에 접속한 다음 env을 통해 확인해보면 잘 설정된 것을 확인해 볼 수 있다.

추가적으로 $ mysql -u root -p를 통해 내가 입력한 password가 제대로 적용됐는지 확인해보자.


WordPress 컨테이너 생성

다음으로는 워드프레스 컨테이너를 생성해보겠다.

$ docker run -d 
-e WORDPRESS_DB_PASSWORD=password 
--name wordpress 
--link wordpressdb:mysql 
-p 80 
wordpress

이번에는 --link라는 옵션이 눈에 띈다. --link 옵션은 내부 IP를 알 필요없이 컨테이너 별명으로 접근하도록 해준다. 이렇게 쓰는 이유는 내부 IP는 컨테이너를 시작 할 때마다 재할당 되기 때문에 언제든지 바뀔 수 있기 때문이다. 이제 wordpress 내부에서 mysql이라는 호스트명으로 wordpressdb에 접근할 수 있다.

🚨 하지만 이렇게 쓰는 것보다 도커 브리지 네트워크를 사용하는 것을 권장한다. 이후 배워볼 것이다.

추가적으로 -p 80 이라고 하고 외부포트는 지정해주지 않았는데 알아서 도커가 자동으로 지정해준다.


마침

이렇게 mysql 컨테이너와 wordpress 컨테이너를 각각 띄워보고 연결해보는 실습까지 진행해봤다.

profile
배움을 좋아합니다. 새로운 것을 좋아합니다.

0개의 댓글