Cloud
내가 만든 소스를 포함해서 docker 이미지 빌드하기
arisu1000
2015. 1. 30. 09:00
Dockerfile에 현재 디렉토리를 컨테이너의 /src 등 특정경로에 복사해 넣게 하면됨.
그외 실행에 필요한 환경은 RUN 명령어를 이용해서 컨테이너에 설정하면 됨.
모든 필요한 환경이 이미지에 포함되니까 나중에는 빌드된 이미지만 배포하면 실행은 문제없이 가능하게 되는구조.
다음 package.json, index.js, Dockerfile을 하나의 디렉토리에 만든다.
package.json
{
"name": "docker-centos-hello",
"private": true,
"version": "0.0.1",
"description": "Node.js Hello world app on CentOS using docker",
"author": "Daniel Gasienica <daniel@gasienica.ch>",
"dependencies": {
"express": "3.2.4"
}
}
|
index.js
var express = require('express');
// Constants
var PORT = 8080;
// App
var app = express();
app.get('/', function (req, res) {
res.send('Hello world\n');
});
app.listen(PORT);
console.log('Running on http://localhost:' + PORT);
|
Dockerfile
FROM centos:centos6
# Enable EPEL for Node.js
RUN rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
# Install Node.js and npm
RUN yum install -y npm
# Bundle app source
COPY . /src
# Install app dependencies
RUN cd /src; npm install
EXPOSE 8080
CMD ["node", "/src/index.js"]
|
docker 이미지 빌드하기
docker build -t <your username>/centos-node-hello .
빌드된 이미지 확인하기
docker images
이미지 실행하기
docker run -p 49160:8080 -d <your username>/centos-node-hello
앱의 출력 확인하기
docker ps
docker logs <container id>
앱에 접속해보기
접속할 vm의 ip 확인
boot2docker ip
확인한 ip로 접속
curl 192.168.59.103:49160
빌드된 docker 이미지를 docker hub에 배포
docker push <container name>
ex) docker push arisu1000/centos-node-hello
참고