sitelink1 | |
---|---|
sitelink2 | |
sitelink3 | |
extra_vars6 |
Ubuntu에 Docker를 설치하고 실행하여 Node.js로 웹서버를 구동하고 Hello World를 출력하는 테스트 프로젝트이다
Ubuntu를 처음 설치한 상태라면 root 계정으로 로그인이 불가할 것이다
-> 비밀번호를 설정한 적이 없어서 비밀번호가 틀리다고 나온다
그래서 sudo -i 명령어로 root의 비밀번호를 초기화해주고 로그인 가능 상태로 만들어둬야 작업이 편하다 ( root로 전환후 비밀번호 변경 )
이후 다음의 절차로 테스트 프로젝트를 수행한다
* [터미널1] node.js의 최신 이미지(OS:Debian GNU/Lunux 9)을 다운받는다
user@~:~$ docker pull node
* [터미널1] 작업의 편이성을 위해 root계정으로 전환한다
user@~:~$ su -
* [터미널1] docker container를 실행한다 (host와 guest의 port는 8888로 연결하고 디렉토리도 공유시킨다)
root@~:~# docker run --name node_1 -it -p 8888:8888 -v ~root/tmp:/nodetmp/ node bash
* [터미널1] docker가 실행되면 container내로 진입하여 shell프롬프트가 깜박이는 상태가 된다
위에서 연결한 디렉토리로 이동한다
root@~:/# cd nodetmp
* [터미널1] 디렉토리 이동후 프로젝트 디렉토리를 생성하고 이동한다
root@~:/nodetmp# mkdir project_nodejs
root@~:/nodetmp# cd project_nodejs
root@~:/nodetmp/project_nodejs#
* [터미널1] Node Package Manager를 초기화한다 (초기화시 입력해야하는 항목들마다 엔터하여 기본값으로 설정해도 무방하다)
root@~:/nodetmp/project_nodejs# npm init
* [터미널1] npm으로 http, express 패키지를 설치한다
root@~:/nodetmp/project_nodejs# npm install http
root@~:/nodetmp/project_nodejs# npm install express
* [터미널1] 터미널창을(터미널2) 추가로 오픈하고 root계정으로 전환한다
user@~:~$ su -
* [터미널2] container와 연결된 디렉토리에서 js를 생성하고 편집한다
root@~:~# cd ~root/tmp/project_nodejs
root@~:~/tmp/project_nodejs# vi app1.js
<app1.js 의 내용>
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.end('Hello World with http');
}).listen(8888, function() {
console.log('listening...');
});
* [터미널1] container내에서 node로 host에서 작성한 app1.js 를 실행한다
root@~:/nodetmp/project_nodejs# node app1.js
* host에서 브라우저를 실행하고 접속한다
* [터미널2] express모듈을 이용하여 app2.js 를 작성한다
root@~:~/tmp/project_nodejs# vi app2.js
* [터미널1] container내에서 node로 host에서 작성한 app2.js 를 실행한다
root@~:/nodetmp/project_nodejs# node app2.js
<app2.js 의 내용>
var express = require('express'); var app = express();
app.get('/', function(req, res) {
res.send('Hello World with express');
});
app.listen(8888, function() {
console.log('listening...');
});
* host에서 브라우저를 실행하고 접속한다