fig 사용기

정창훈(@seapy)

Docker Korea

사용하게된 이유

  • rorlab 오픈소스 프로젝트
    • https://github.com/RORLabNew/rorla
  • 커밋하기전에 로컬에서 운영환경 확인이 필요
    • 운영서버 접근권한은 2명만 나머지는 없음
  • MySQL, 볼륨 컨테이너등 총 4개의 컨테이너가 필요
  • 복잡해서 쉽게 테스트하기 어려움

이쯤에서 다시 보는 fig 타이틀

Fast, isolated

development environments

using Docker.

내가 fig 를 사용한 목적은

커밋하기전에 로컬에서 운영환경 확인

컨테이너 구성

mysqldata

(volume container)

mysql

Rails

uploads

(volume container)

link

fig.yml

mysqldata:
  image: busybox
  volumes:
    - /var/lib/mysql

mysql:
  image: tutum/mysql
  ports:
    - "3306:3306"
  volumes_from:
    - mysqldata
  environment:
    MYSQL_USERNAME: admin
    MYSQL_PASS: yourpassword

uploads:
  image: busybox
  volumes:
    - /app/public/uploads
web:
  build: .
  volumes_from:
    - uploads
  ports:
    - "80:80"
  links:
    - mysql
  environment:
    SECRET_KEY_BASE: secretkey
    MANDRILL_USERNAME: email@email.com
    MANDRILL_APIKEY: password
    RORLA_HOST: localhost
    RORLA_LOGENTRIES_TOKEN: key
    MAILCHIMP_API_KEY: key

https://github.com/RORLabNew/rorla/blob/master/fig.yml

DB 마이그레이션 문제

$ fig run --rm web bundle exec rake db:create
$ fig run --rm web bundle exec rake db:migrate
$ fig run --rm web bundle exec rake db:seed

DB 생성, 마이그레이션, 시드 데이터 추가

fig up

???

DB 컨테이너 재생성 해버림...

fig up --no-recreate

이미 해당하는 컨테이너가 있으면 다시 생성하지 않음

잘된다!
소스수정하면
반영안됨ㅜㅜ

--no-recreate

레일스 컨테이너도 이미 있는거 쓰게되서

소스 변경한걸로 빌드 안함

fig.yml
컨테이너별로
--no-recreate
할 수 있다면 좋겠다

발표자료 만들다가...

mysqldata:
  image: busybox
  volumes:
    - tmp/fig/mysqldata:/var/lib/mysql

mysql:
  image: tutum/mysql
  ports:
    - "3306:3306"
  volumes_from:
    - mysqldata
  environment:
    MYSQL_USERNAME: admin
    MYSQL_PASS: yourpassword

uploads:
  image: busybox
  volumes:
    - tmp/fig/uploads:/app/public/uploads

이제 그냥 fig up


결국엔 삽질기

fig 사용기

By ChangHoon Jeong

fig 사용기

fig를 사용하면서 겪은 이야기. Docker Korea 캐주얼 토크 #2 발표. 2014년 12월 3일(수) 오후 7시

  • 2,876