
실습 디렉토리 생성
mkdir ~/docker-practice-scalable-web
실습 디렉토리로 이동
cd ~/docker-practice-scalable-web
웹 어플리케이션 서버는 node로 제작. 이를 위해 index.js 파일 작성
cat <<EOF > ~/docker-practice-scalable-web/index.js
var http = require('http');
var os = require('os');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.end("<h1>I'm " + os.hostname() + "</h1>");
}).listen(8080);
EOF
Dockerfile 작성
cat <<EOF > ~/docker-practice-scalable-web/Dockerfile
FROM node
RUN mkdir -p /usr/src/app
COPY index.js /usr/src/app
EXPOSE 8080
CMD [ "node", "/usr/src/app/index" ]
EOF
이미지 빌드
docker build -t node-server ~/docker-practice-scalable-web/
이미지 확인
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
node-server latest 6115811ca3c2 28 minutes ago 899MB
docker-compose 파일 작성
cat <<EOF > ~/docker-practice-scalable-web/docker-compose.yml
version: '2'
services:
web:
image: node-server
lb:
image: dockercloud/haproxy
links:
- web
ports:
- '80:80'
volumes:
- /var/run/docker.sock:/var/run/docker.sock
EOF
docker-compose를 통해 컨테이너 생성
docker-compose -p practice up -d
Creating network "docker_default" with the default driver
Pulling lb (dockercloud/haproxy:)...
latest: Pulling from dockercloud/haproxy
1160f4abea84: Pull complete
b0df9c632afc: Pull complete
a49b18c7cd3a: Pull complete
Creating practice_web_1 ... done
Creating practice_lb_1 ... done