Seize the day

POST : Backend study

docker image 만들기 테스트

$ mkdir hello_docker
$ cd hello_docker
$ npm init
$ cat package.json

{
  "name": "hello_docker",
  "version": "1.0.0",
  "description": "hello docker test",
  "main": "app.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

 

$ vi app.js

const http = require('node:http');

const hostname = '0.0.0.0';
const port = 8000;

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello, World!\n');
});

server.listen(port, hostname, () => {
  console.log(`Node Server running at http://${hostname}:${port}/`);
});

 

$ vi Dockerfile

# Docker Hub에 있는 node의 최신 LTS(장기 지원) 버전인 16을 사용할 것입니다.
FROM node:16.18

# 컨테이너 앱 디렉터리 생성
WORKDIR /app

# 앱 의존성 설치
# 가능한 경우(npm@5+) package.json과 package-lock.json을 모두 복사하기 위해
# 와일드카드를 사용
COPY package*.json ./

RUN npm install
# 프로덕션을 위한 코드를 빌드하는 경우
# RUN npm ci --only=production

# 앱 소스 추가
# .dockerignore 작성할 것
COPY . .

# 앱이 8000포트에 바인딩 되어 있으므로 EXPOSE 지시어를 사용해서 docker 데몬에 매핑합니다.
EXPOSE 8000

# 서버 시작
CMD [ "node", "app.js" ]

# docker build . -t djkim/hello_docker
# docker run --name test1 -d -p 8000:8000 djkim/hello_docker

vi .dockerignore
node_modules
npm-debug.log

# hello_docker 라는 850메가 도커 이미지 생성
$ docker build . -t djkim/hello_docker

# 도커 컨테이너 test1을 생성하고 실행한다. 서버 포트 8000을 컨테이너 포트 8000으로 바잉딩
$ docker run --name test1 -d -p 8000:8000 djkim/hello_docker

# test 
$ curl http://localhost:8000
Hello, World!

% docker logs test1
Node Server running at http://0.0.0.0:8000/

간단한 서비스의 배포를 서버까지 다 포함시킨 이미지를 만들어서 배포하는 것은 문제가 있어서 docker-compose 를 공부할 것.. 

 

자습서: Visual Studio Code에서 Docker 앱 시작 | Microsoft Learn

 

자습서: Visual Studio Code에서 Docker 앱 시작

이 자습서에서는 VS Code에서 Docker 사용을 시작하는 방법을 알아봅니다. Azure에 앱을 만들고 배포합니다.

learn.microsoft.com

 

top

posted at

2022. 10. 19. 23:55


CONTENTS

Seize the day
BLOG main image
김대정의 앱 개발 노트와 사는 이야기
RSS 2.0Tattertools
공지
아카이브
최근 글 최근 댓글
카테고리 태그 구름사이트 링크