[개인 노트] building으로 쉽게 Docker container 만들기

12691 단어 Docker

이른바 building


필사적으로 일할 때
트위터의 타임라인에는 다음과 같은 블로그 항목이 떠돌고 있다.
파마 링크로 보니까 좋네요.
항목 내용
Docker로 응용 프로그램을 이동하는 것은 매우 어렵다
좀 더 간단하게.히로쿠처럼.
왜냐하면 위에 써있어요.
이거 괜찮지 않아요?생각해서 만져봤어요.

환경 확인


나의 환경은 다음과 같다
OS: Mac OS X 10.9.2

개발 환경


...이번 검증을 위해 설치합니다.
필요한 소프트웨어는 다음과 같습니다.
  • homebrew
  • Virtualbox
  • boot2docker
  • docker
  • gist Brewfile을 주었습니다.
    홈brew 설치 후
    소프트웨어를 설치하려면 다음 명령을 사용하십시오.
    > ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
    > git clone https://gist.github.com/9926658.git
    > cd 9926658
    > brew bundle
    

    building 설치


    building은gem 패키지입니다. 다음 명령을 실행하고 설치합니다.
    > gem install building --no-ri --no-rdoc
    
    글로벌 설치 이유
    Gemfile을 응용 프로그램과 같은 디렉토리에 배치하는 경우
    헤로쿠가 루비 앱으로 알게 됐기 때문이다.
    다음은 노드.업로드를 위해 js를 사용한 샘플 응용 프로그램
    글로벌 설치가 진행 중입니다.

    샘플 애플리케이션을 먼저 만들어 보도록 하겠습니다.


    이 항목에 적힌 node.js 프로그램을 써 보았습니다.
    ※ 다음 github 창고에서 완성된 템플릿은 클렌징이 가능합니다.
    server.js
    var PORT = process.env.PORT || 8080;
    var express = require('express');
    
    var app = express();
    app.use(app.router);
    
    app.get('/', function(req, res) {
      res.send("Welcome to underground");
    });
    
    app.listen(PORT);
    
    package.json
    {
      "name": "test-app",
      "version": "0.0.1",
      "private": true,
      "main": "server.js",
      "engines": {
        "node": ">=0.10.0",
        "npm": ">=1.3"
      },
      "dependencies": {
        "express": "~3.0"
      }
    }
    

    building으로 Docker 이미지 만들기


    다음 명령을 사용하여 Docker image를 만듭니다.
    > building test/node-app
    
    docker build가 시작되고 이미지가 생성됩니다.
    화면이 완성되면...docker run 명령은 container를 만들도록 합니다.

    이번에는 boot2 docker 포트 8080입니다.
    호스트(Mac Book Pro Retina 13 inch)의 포트 8080
    명확하게 전달하다.
    > VBoxManage controlvm "boot2docker-vm" natpf1 "test-port-of-httpd,tcp,127.0.0.1,8080,,8080" # port forwarding from docker container to host.
    > docker run -d -p 8080:8080 -e "PORT=8080" test/node-app:latest
    
    브라우저에서 열어 보세요.
    > open http://localhost:8080/
    

    오, 프로그램이 시작되고 있습니다.

    헤로쿠도 해보세요.


    헤로쿠도 해보세요.
    Procefile을 쓰는 것을 잊지 마세요.
    Procfile
    web: node server.js
    
    > heroku create
    > git push heroku master
    > open http://foolish-bastion-2718.herokuapp.com/
    

    네.움직여.

    build-pack을 해봤는데...


    참조할 항목
    build-pack-hvm 적용
    hhvm로 wordpress를 이동하고 있습니다.

    이미 있는 것을
    맞춤형으로 만들어볼까 봐요.
    한번 해봤어요.
    대상은 아래의build-pack입니다.
    (이build-pack은 이미 docker 이미지에 있습니다)
    display_errors=on
    
    수정된 php입니다.적용 ini
    build-pack을 사용하고 싶습니다.
    맞춤형build-pack이 완성되었습니다.

    당장 적용하고 싶지만...


    Docker file을 준비했는데도 푹 빠졌어요.
    1) 이미 존재하는 동일한build-pack은 사용할 수 없습니다.
    매개 변수에 building을 전달하여building을 실행합니다
    build 패키지를 추가할 수 있기 때문에 다음 명령을 실행해 보십시오.
    > building -b https://github.com/futoase/heroku-buildpack-php futoase/faid-app
    
    그러나git clone 할 때 같은build-pack이 존재하여 화를 낸다.

    엉엉
    2) 맞춤형 Docker file이 준비되어 있어도 기본 Docker file로 덮어쓰기
    다음 Docker command 실행
    사용자 정의build pack을 적용하려고 합니다.
    Dockerfile
    FROM ctlc/buildstep:ubuntu13.10
    
    RUN find /build/buildpacks -type d -delete
    RUN truncate --size 0 /build/buildpacks.txt
    
    RUN git clone --depth 1 https://github.com/futoase/heroku-buildpack-php /build/buildpacks/heroku-buildpack-php
    RUN echo https://github.com/futoase/heroku-buildpack-php-test >> /build/buildpacks.txt
    ADD . /app
    RUN /build/builder
    CMD /start web
    
    building에 옵션 제출하기
    사용자 정의build-pack 사용하기
    제작된 Docker file을 적용하려고 합니다.
    > building -d Dockerfile futoase/faild-app test
    
    하지만 안 돼요.
    building을 실행하는 디렉토리에서 만든 Docker file
    목적을 달성하지 못하다.
    Dockerfile
    FROM ctlc/buildstep:ubuntu13.10
    FROM ctlc/buildstep:ubuntu13.10
    ADD . /app
    RUN /build/builder
    CMD /start web
    
    응, 명령줄이 모두 삭제됐어.
    building에서 사용하는 docker 이미지에 포함되어 있습니다
    build-pack을 사용한다면 맞춤형 제작을 포기하는 것이 좋습니다.
    에 포함된 build-pack은 다음과 같습니다.
  • https://github.com/heroku/heroku-buildpack-ruby.git
  • https://github.com/heroku/heroku-buildpack-nodejs.git
  • https://github.com/heroku/heroku-buildpack-java.git
  • https://github.com/heroku/heroku-buildpack-play.git
  • https://github.com/heroku/heroku-buildpack-python.git
  • https://github.com/heroku/heroku-buildpack-scala.git
  • https://github.com/heroku/heroku-buildpack-clojure.git
  • https://github.com/heroku/heroku-buildpack-gradle.git
  • https://github.com/heroku/heroku-buildpack-grails.git
  • https://github.com/CHH/heroku-buildpack-php.git
  • https://github.com/kr/heroku-buildpack-go.git
  • https://github.com/oortcloud/heroku-buildpack-meteorite.git
  • https://github.com/miyagawa/heroku-buildpack-perl.git
  • https://github.com/igrigorik/heroku-buildpack-dart.git
  • https://github.com/rhy-jot/buildpack-nginx.git
  • https://github.com/Kloadut/heroku-buildpack-static-apache.git
  • https://github.com/bacongobbler/heroku-buildpack-jekyll.git
  • https://github.com/ddollar/heroku-buildpack-multi.git
  • building의 활용 방법


    놀려 보아라, 알겠지만
  • 는 Heroku 프로그램을 시작하는 제품이 아니다.언제나 히로쿠 바람.
  • 히로쿠 앱을 만드는 것처럼 쉽게 Docker에서 응용할 수 있는 환경이다
  • 열거되어 있지만 docker 이미지에 많은 Heroku-build-pack이 포함되어 있습니다.나는 ansible 등 언어 환경을 구축하는 시간을 절약할 수 있다고 생각한다
  • 그러니까웹 응용 프로그램을 만들 때
    동작 환경을 만드는 게 귀찮아요.
    응용 프로그램 제작 기술의 연장선상에서 만들고 싶어요.
    > building hoge/app-name
    
    명령을 입력하기만 하면 응용된 동작 환경(docker image)을 만들 수 있고,
    프로그램이 Docker에서 일어나기 때문에 동작을 바로 확인할 수 있어 가볍다.
    Windows용 boot2 docker installer도 공개
    사용자가 만든 응용 프로그램의 모델
    Windows 사용자가 손쉽게 전송하고 실행할 수 있도록 하려면
    장소에서 쓸모가 있을 것 같습니다.

    좋은 웹페이지 즐겨찾기