이 글의 시작은 도커를 이용한 분산 서비스 아키텍처 맛보기 이 포스팅으로 부터 시작합니다.


우분투 가상머신에서의 네이티브 docker환경, 그리고 맥에서의 삽질끝에 깔끔하게 정리해 봐야 겠다는 생각이 들어서 정리해 봅니다.


1. docker for mac 설치

  

   두가지 설치 방법이 있는데 신규 설치라면 docker for mac을 설치 하고

   기존 설치 환경을 이용하거나 구버전 OS라면 docker toolbox를 설치 합니다.


   이 포스팅은 docker for mac을 기준으로 하며 docker version 1.12.0 이 설치 됩니다.


   구버전 virtualbox가 설치된경우 문제가 된다고 합니다.


   https://www.docker.com/products/docker#/mac


   docker.dmg를 다운받아 더블클릭하고 설치 합니다.

  


실행시키면 경고창이 하나 뜹니다. 닫고 다시 실행시키면 잠시후 트레이에 실행중인 모습이 보입니다.




터미널을 열고 docker -v 해보면 버전확인을 할 수 있습니다. 도커 환경 준비 완료!


2. 환경설정

  

   composer가 필요합니다. brew를 이용하거나 직접 설치 합니다.


3. 프로젝트 복제


  원본 프로젝트를 포크 후 clone하고composer를 실행합니다.


  git clone https://github.com/pokev25/quickstart-intermediate.git quickstart

  cd quickstart

  composer install

 

  redis를 사용할 것이니 추가 합니다.

  composer require predis/predis:^1.0


  서브모듈을 설정하기 위해서 원본을 포크 하고 서브모듈을 추가 합니다.


  git submodule add https://github.com/pokev25/laradock.git

 

4. 예제 처럼 프로젝트 수정

 

    예제의 커밋 로그를 확인하고 동일하게 몇 군데 손봅시다.

    DB는 mariadb를 사용합니다.


    .env

  DB_HOST=mariadb

  CACHE_DRIVER=redis
  SESSION_DRIVER=redis

  REDIS_HOST=redis


  docker-compose.yml에서 사용할 부분만 남기고 제거하고  lb와 web을 추가 합니다.


  사용할 부분만 정리 했으니 이미지를 가동합니다.


  docker-compose up


docker-compose ps 로 실행 상태를 확인

          Name                         Command               State                    Ports
-----------------------------------------------------------------------------------------------------------
laradock_lb_1               /sbin/tini -- dockercloud- ...   Up       1936/tcp, 443/tcp, 0.0.0.0:80->80/tcp
laradock_mariadb_1          docker-entrypoint.sh mysqld      Up       0.0.0.0:3306->3306/tcp
laradock_redis_1            docker-entrypoint.sh redis ...   Up       0.0.0.0:6379->6379/tcp
laradock_volumes_data_1     true                             Exit 0
laradock_volumes_source_1   true                             Exit 0
laradock_web_1              /usr/bin/supervisord -c /e ...   Up       443/tcp, 80/tcp, 9000/tcp
laradock_workspace_1        /sbin/my_init                    Up   

 

브라우져로 localhost에 접속해보면 페이지가 동작한다.

5. 분산환경 테스트


워크스페이스로 들어가서artisan을실행합니다.

docker-compose exec workspace bash

php artisan migrate

exit


docker-compose scale web=3


잘 동작한다.!!

 


6. 받아서 실행만 하기


git clone https://github.com/pokev25/quickstart-intermediate.git quickstart

cd quickstart

git submodule init && git submodule update

composer install


cd laradock

docker-compose up

docker-compose exec workspace bash

php artisan migrate

exit


docker-compose scale web=3

  

ps. 우분투에서 테스트 결과 잘 동작함

docker for mac이 나오면서 맥에서 개발한 docker-compose를 그대로 실환경에서 사용가능해짐

  


  

저작자 표시 비영리 변경 금지
신고

'지식창고 > docker' 카테고리의 다른 글

Laradock 샘플 수정 과정 정리  (0) 15:12:10
LaraDock 샘플 체험 삽질기 with mac  (0) 11:41:23
LaraDock 샘플 체험 삽질기  (0) 2016.08.24

Trackback Address :: http://dummy.pe.kr/trackback/1733 관련글 쓰기

부트캠프로 윈도우를 주로 사용중이라 오랜만에 맥으로 부팅하고 이거저거 업데이트를 하다보니


docker for mac이 새로나왔다는게 생각나서 설치해봤다.

무척이나 쉽게 설치되며 리눅스에 도커가 설치된 것 처럼 사용 가능하다.




예제가 docker-machine이라서 새로운 방식의 맥용 docker 와는 다르다.


예제와 달리 docker-machine ip를 하면 에러가 난다.


Error: No machine name(s) specified and no "default" machine exists.


한번 삽질 해봤으니 했던 대로 똑같이 테스트를 진행했다.


그런데 data컨테이너가 실패한다.  맥에서는 안되는 모양이다.



LaraDock 저장소의 docker-compose.yml 를 살펴보니 맵핑이 바뀌었다.


그대로 변경을 하니 잘 동작한다.



boot2docker나 docker-machine과는 구조가 많이 달라진 것 같다.



저작자 표시 비영리 변경 금지
신고

'지식창고 > docker' 카테고리의 다른 글

Laradock 샘플 수정 과정 정리  (0) 15:12:10
LaraDock 샘플 체험 삽질기 with mac  (0) 11:41:23
LaraDock 샘플 체험 삽질기  (0) 2016.08.24

Trackback Address :: http://dummy.pe.kr/trackback/1732 관련글 쓰기

라라벨 개발에 docker를 이용한 LaraDock 이란게 있다는 소리를 들었는데

테스트 해볼 수 있는 좋은 포스팅을 따라해 보기로 했다.


http://blog.appkr.kr/work-n-play/dockerize/


포스팅은 docker-machine에서 실행 하는 것이였는데 나는 VMWare에 우분투를 설치해서 이거 저거 테스트 중이라 샘플 구경할겸 따라 해보기로 했다.

모든 참사는 여기에서 부터 시작한다  '이거 저거 테스트 하던 가상머신' 이라는것이다.


동작하던 아파치와  mariadb를 중지 시키고 하라는 대로 따라했다.


첫번째 벽은 HAProxy에서 시작했다.

도데체 이걸 어떻게 설정 하는거지? 구글링 끝에 찾아낸 설정으로 변경했다.


기존

### HAProxy Container #######################################

    lb:
#        image: dockercloud/haproxy
        build:
            context: ./lb
            dockerfile: Dockerfile
        links:
            - web
        ports:
            - "80:80"
            - "443:443"
        environment:
            - DOCKER_TLS_VERIFY
            - DOCKER_HOST
            - DOCKER_CERT_PATH
        volumes:
            - $DOCKER_CERT_PATH:$DOCKER_CERT_PATH
            - ./logs/supervisor/:/var/log/supervisor
        tty: true


변경  

### HAProxy Container #######################################

    lb:
        # image: dockercloud/haproxy
        build:
            context: ./lb
            dockerfile: Dockerfile
        links:
            - web
        ports:
            - "80:80"
        volumes:
            - /var/run/docker.sock:/var/run/docker.sock
            - ./logs/supervisor/:/var/log/supervisor
        tty: true


두번째는 이상한 에러가 나왔다.

.env에 ip를 틀렸나? 이상한데? 여러 삽질끝에 에러 메시지를 다시 천천히 살펴봤다. class가 없단건데...

공식문서를 뒤진다.

composer require predis/predis:^1.0

빙고!


로그인을 하는데 DB접속을 할 수 없다고 나온다. 이상하다.. 분명 설명 블로그에는 외부에서도 된다 했는데 안된다.

이상하다...그러다 문득..기존에 테스트로 쓰던  mysql과 충돌난게 아닌가? 하는 생각이 번쩍 들었다...

/var/lib/mysql를 이동하고 도커를 다시 실행시켰더니 잘 동작한다.


.env에 ip를 적을 필요 없이  mysql, redis등으로 적어도 도커컨테이너를 잘 찾아서 접속된다.


삽질끝에 docker-compose 사용법과 컨테이너간의 연결에대한 이해도가 조금 생겼다.도커 재미있구나


저작자 표시 비영리 변경 금지
신고

'지식창고 > docker' 카테고리의 다른 글

Laradock 샘플 수정 과정 정리  (0) 15:12:10
LaraDock 샘플 체험 삽질기 with mac  (0) 11:41:23
LaraDock 샘플 체험 삽질기  (0) 2016.08.24

Trackback Address :: http://dummy.pe.kr/trackback/1731 관련글 쓰기