[개인 노트] building으로 쉽게 Docker container 만들기
12691 단어 Docker
이른바 building
필사적으로 일할 때
트위터의 타임라인에는 다음과 같은 블로그 항목이 떠돌고 있다.
파마 링크로 보니까 좋네요.
항목 내용
Docker로 응용 프로그램을 이동하는 것은 매우 어렵다
좀 더 간단하게.히로쿠처럼.
왜냐하면 위에 써있어요.
이거 괜찮지 않아요?생각해서 만져봤어요.
환경 확인
나의 환경은 다음과 같다
OS: Mac OS X 10.9.2
개발 환경
...이번 검증을 위해 설치합니다.
필요한 소프트웨어는 다음과 같습니다.
나의 환경은 다음과 같다
OS: Mac OS X 10.9.2
개발 환경
...이번 검증을 위해 설치합니다.
필요한 소프트웨어는 다음과 같습니다.
홈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.jsvar 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을 쓰는 것을 잊지 마세요.
Procfileweb: 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을 적용하려고 합니다.
DockerfileFROM 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
목적을 달성하지 못하다.
DockerfileFROM ctlc/buildstep:ubuntu13.10
FROM ctlc/buildstep:ubuntu13.10
ADD . /app
RUN /build/builder
CMD /start web
응, 명령줄이 모두 삭제됐어.
building에서 사용하는 docker 이미지에 포함되어 있습니다
build-pack을 사용한다면 맞춤형 제작을 포기하는 것이 좋습니다.
에 포함된 build-pack은 다음과 같습니다.
> gem install building --no-ri --no-rdoc
이 항목에 적힌 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입니다.적용 inibuild-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은 다음과 같습니다.
building의 활용 방법
놀려 보아라, 알겠지만
동작 환경을 만드는 게 귀찮아요.
응용 프로그램 제작 기술의 연장선상에서 만들고 싶어요.
> building hoge/app-name
명령을 입력하기만 하면 응용된 동작 환경(docker image)을 만들 수 있고,프로그램이 Docker에서 일어나기 때문에 동작을 바로 확인할 수 있어 가볍다.
Windows용 boot2 docker installer도 공개
사용자가 만든 응용 프로그램의 모델
Windows 사용자가 손쉽게 전송하고 실행할 수 있도록 하려면
장소에서 쓸모가 있을 것 같습니다.
Reference
이 문제에 관하여([개인 노트] building으로 쉽게 Docker container 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/futoase/items/21167e9d064b0e336e8f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)