docker-compose 를 이용하여

개발환경 구축하기 ( feat. vagrant )

SK planet Data Infrastructure

김 용 휘

 

( http://ggoals.tistory.com/ )

고오오오급 개발자

New 개발자

고오오오급 개발자

New 개발자

개발환경 셋팅 좀 해주세요.

Tomcat, MySQL, Redis,

Node .... 등등

깔아주시면 돼요.

 

고오오오급 개발자

New 개발자

넵!

완료했습니다!!

 

고오오오급 개발자

New 개발자

이건 어떻게 깔아요?

여기 에러 메시지 좀 봐주세요..

버전은 x.x 로 해도 되요?

잘돼서 배포 했더니 에러나요..

새로오신 분도 셋팅좀 해주세요!

말씀하신대로 했는데 안돼요

디버깅은 어떻게 해요?

고오오오급 개발자

New 개발자

이건 어떻게 깔아요?

여기 에러 메시지 좀 봐주세요..

버전은 x.x 로 해도 되요?

잘되서 배포 했더니 에러나요..

새로오신 분도 셋팅좀 해주세요!

말씀하신데로 했는데 안되요

디버깅은 어떻게 해요?

How??

Docker 란?

Docker-compose 란?

$ docker run [OPTIONS] IMAGE_NAME [COMMAND] [ARG...]

I am container!

$ docker run [OPTIONS] IMAGE_NAME [COMMAND] [ARG...]

$ docker run [OPTIONS] IMAGE_NAME [COMMAND] [ARG...]

$ docker run [OPTIONS] IMAGE_NAME [COMMAND] [ARG...]

$ docker run [OPTIONS] IMAGE_NAME [COMMAND] [ARG...]

$ docker run [OPTIONS] IMAGE_NAME [COMMAND] [ARG...]

도커 컴포즈는

 

Multi-container

를 돌리기 위한 Tool 이다.

------------------------------ web 컨테이너

------------- redis 컨테이너

$ docker-compose up

 - Development environments

 - Automated testing environments

 - Single host deployments

 - using in docker swarm

    ㅁ 일반적인 사용 케이스

 - Development environments

 - Automated testing environments

 - Single host deployments

 - using in docker swarm

    ㅁ 일반적인 사용 케이스

기존 프로젝트에 docker-compose 적용 해보기

1. UI Project ( Application Context : "/" ) - Spring MVC

 

2. API Project ( Application Context : "/api" ) - Spring MVC

 

3. Admin Project ( Application Context : "/admin" ) - Spring MVC

Client ( / )

Api ( /api )

Admin ( /admin )

WAS ( Tomcat )

Database

( MySQL )

Client ( / )

Api ( /api )

Admin ( /admin )

WAS ( Tomcat )

Database

( MySQL )

  1단계 : Dockerfile 만들기 ( MySQL )

  1단계 : Dockerfile 만들기 ( Tomcat )

  2단계 : docker-compose.yml 만들기

MySQL Dockerfile 위치

Tomcat Dockerfile 위치

  3단계 : web property 파일 수정하기

  3단계 : web property 파일 수정하기

  1단계 : Dockerfile 만들기 ( MySQL )

MySQL

  1단계 : Dockerfile 만들기 ( MySQL ), ( Tomcat )

MySQL

Tomcat

  1단계 : Dockerfile 만들기 ( MySQL ), ( Tomcat )

MySQL

Tomcat

  2단계 : docker-compose.yml 만들기

  1단계 : Dockerfile 만들기 ( MySQL ), ( Tomcat )

MySQL

Tomcat

  2단계 : docker-compose.yml 만들기

  3단계 : web property 파일 수정하기

127.0.0.1:3306 !!!

??????

  1단계 : Dockerfile 만들기 ( MySQL ), ( Tomcat )

MySQL

Tomcat

  2단계 : docker-compose.yml 만들기

  3단계 : web property 파일 수정하기

registration-database:3306 !!!

!!!!!!

  4단계 : docker-compose up

End

고오오오급 개발자

New 개발자

고오오오급 개발자

New 개발자

$ docker-compose up

해주세요

시    연

  5단계 : debugging 셋팅 ( Intellij )

  5단계 : debugging 셋팅 ( Intellij )

Vagrant 란?

    Virtual Box 를 쓰면...

    Virtual Box 를 쓰면...

    Virtual Box 를 쓰면...

    Virtual Box 를 쓰면...

Vagrant

Provisioning

etc...

Providers

기존 프로젝트에 vagrant 적용 해보기

Client ( / )

Api ( /api )

Admin ( /admin )

WAS ( Tomcat )

Database

( MySQL )

  1단계 : Vagrantfile 만들기

  1단계 : Vagrantfile 만들기

  2단계 : setup.sh, startup.sh 작성

setup.sh

        1. Java 8 을 설치

        2. Tomcat 8.0.x 를 설치

        3. MySQL 5.6.x 를 설치

startup.sh

        1. Tomcat, MySQL run !

  3단계 : vagrant up

End

고오오오급 개발자

New 개발자

고오오오급 개발자

New 개발자

$ vagrant up

해주세요

시    연

Docker-compose   vs   Vagrant

    가벼운걸 원한다면

    가벼운걸 원한다면

docker-compose

   개발환경에서의 셋팅을 Deploy 에 써먹고 싶으면

   개발환경에서의 셋팅을 Deploy 에 써먹고 싶으면

docker-compose

    이미 있는 docker images 들을 이용하고 싶다면

    이미 있는 docker images 들을 이용하고 싶다면

docker-compose

   IP:port 로 직접 접근해야 한다면

 Docker for Mac 은 docker host 에서 container 에 ping 을 못날려요 ㅠㅠ

   IP:port 로 직접 접근해야 한다면

172.18.0.2

MySQL

   IP:port 로 직접 접근해야 한다면

172.18.0.2:3306 !!!

MySQL

?????

   IP:port 로 직접 접근해야 한다면

127.0.0.1:3306 !!!

MySQL

!!!!

   IP:port 로 직접 접근해야 한다면

 Docker for Mac 은 docker host 에서 container 에 ping 을 못날려요 ㅠㅠ

vagrant

   File R/W 가 많은 경우 에는

   File R/W 가 많은 경우 에는

vagrant

   섞어 쓰고 싶은 경우에는...?

vagrant

Real Server

Deploy

Tomcat

MySQL

Tomcat

MySQL

   섞어 쓰고 싶은 경우에는...?

그래도 아마 가장 중요한건...

편한거 쓰세요옹

Tech * People + a >= Time ?

Q & A

Made with Slides.com