컨테이너 애플리케이션 구축

700 단어·2 분·원문(.md)

MySQL 컨테이너 생성 #

컨테이너 하나에는 하나의 애플리케이션만 동작시키도록 하는 것이 좋다.

이번에는 MySQL 컨테이너를 띄워보겠다.

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

-d option #

이전까지 -it 옵션을 사용해서 컨테이너 안에 접속한 다음 상호작용할 수 있었다.

하지만 MySQL은 하나의 터미널을 차지하는 mysqld가 실행되므로 -it 옵션을 사용해도 상호작용 할 수 없다.

대신 실행되는 로그만 볼 수 있다.

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

그렇다고 mysql 컨테이너에 접속할 수 있는 방법이 없는건 아니다. $ sudo docker exec -it wordpress /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 이라고 하고 외부포트는 지정해주지 않았는데 알아서 도커가 자동으로 지정해준다.

DevOps/Docker/컨테이너애플리케이션구축.md