๐ ํด๋น ํฌ์คํ ์ ์๋์ ๊ฐ์๋ฅผ ๊ณต๋ถํ ๋ด์ฉ์ ๊ธฐ๋กํ์์ต๋๋ค.
https://www.inflearn.com/course/%EB%8F%84%EC%BB%A4-%EC%9E%85%EB%AC%B8/dashboard
์ด๋ณด๋ฅผ ์ํ ๋์ปค ์๋ด์ - ์ธํ๋ฐ | ๊ฐ์
๋์ปค๋ฅผ 1๋ ๋ชจ๋ฅด๋ ์ ๋ฌธ์, ์ด๋ณด์๋ถ๋ค์ ์ํ ๋์ปค ์๋ด์ ์ ๋๋ค. ๋ณต์กํ ๋ด์ฉ์ ์ ์ธํ๊ณ ๋์ปค๊ฐ ์ ์ธ๊ธฐ๊ฐ ๋ง๊ณ ์ด๋ป๊ฒ ์ฌ์ฉํ๋์ง ๋น ๋ฅด๊ฒ ์ตํ ์ ์๋๋ก ์ง์คํ์์ต๋๋ค., ๋ฐ๋ธ์ต์ค ์ ๋ฌธ
www.inflearn.com
1. node ์น ์ดํ๋ฆฌ์ผ์ด์ ๋ง๋ค๊ธฐ
์ด๋ฒ ์ค์ต์์๋ Nodejs ํ๋ก๊ทธ๋จ๊ณผ fastify ์น ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋์ปค ์ด๋ฏธ์ง๋ฅผ ์์ฑํด๋ณด์.
๋จผ์ fastify ํํ์ด์ง๋ฅผ ์ฐธ๊ณ ํด์ ์ค์น๋ฅผ ์งํํ๋ค.
Fastify, Fast and low overhead web framework, for Node.js
Fast and low overhead web framework, for Node.js
www.fastify.io
(1) fastify ์ค์น
$ npm init
$ npm install fastify
npm์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ๋จผ์ npm ์ด๊ธฐํ ์์ ์ด ํ์ํ๋ค.
์ด๊ธฐํ ํ npm install fastify ๋ช ๋ น์ด๋ก ์ค์นํด์ค๋ค.
(2) app.js ํ์ผ ์์ฑ
fastify๋ฅผ ์ค์นํด์ค ๋๋ ํ ๋ฆฌ๋ฅผ ์ด์ด๋ณด๋ฉด jsonํ์ผ๋ค๊ณผ ๋ชจ๋ ํด๋๊ฐ ์๊ธด ๊ฒ์ ํ์ธํ ์ ์๋ค.
ํด๋น ๋๋ ํ ๋ฆฌ์์ app.jsํ์ผ์ ์์ฑํ์ฌ ์๋์ ์ฝ๋๋ฅผ ๋ถ์ฌ์ค๋ค.
// Require the framework and instantiate it
const fastify = require('fastify')({ logger: true })
// Declare a route
fastify.get('/', async (request, reply) => {
return { hello: 'world' }
})
// Run the server!
const start = async () => {
try {
await fastify.listen(3000)
} catch (err) {
fastify.log.error(err)
process.exit(1)
}
}
start()
(์ด๊ฑฐ ๋ค fastify ํํ์ด์ง์ ๋์์๋ ์ฝ๋์)
(3) app.js ํ์ผ ์คํ
cmd์์ app.jsํ์ผ์ ์คํํ๋ค.
node app.js
๊ทธ๋ผ ์๋์ ๊ฐ์ด 3000๋ฒ ํฌํธ๋ก ์น ์๋ฒ๊ฐ ์ฐ๊ฒฐ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
2. ๋์ปค ์ด๋ฏธ์ง ๋ง๋ค๊ธฐ
(1) Dockerfile ๋ง๋ค๊ธฐ
(๋์ปค์์ ์์ ์ ํ๊ธฐ ์ํด์๋ ์๋์ ๋ด์ฉ์ ์ถ๊ฐํด์ผํ๋ค.)
๊ฐ์ ๊ฒฝ๋ก์ Dockerfile์ ์์ฑํ๊ณ ์๋์ ๋ด์ฉ์ ๋ถ์ฌ์ค๋ค.
# 1. node ์ค์น
FROM ubuntu:20.04
RUN apt-get update
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y nodejs npm
# 2. Nodejs ํจํค์ง ์ค์น
COPY ./package* /usr/src/app/
WORKDIR /usr/src/app
RUN npm install
# 3. ์์ค ๋ณต์ฌ (๋ด ๋๋ ํ ๋ฆฌ์ ์๋ ๋ชจ๋ ํ์ผ์ ์๋์ ๊ฒฝ๋ก์ ๋ณต์ฌ)
COPY . /usr/src/app
# 4. WEB ์๋ฒ ์คํ (Listen ํฌํธ ์ ์)
EXPOSE 3000
CMD node app.js
์ต์ ํ!
1๋ฒ ์ฝ๋๋ฅผ ์๋์ ๊ฐ์ด ์ต์ ํ ์ํฌ ์ ์์
# 1. node ์ด๋ฏธ์ง ์ฌ์ฉ
FROM node:12-alpine
nodeํ์ผ ๋ง๊ณ ์ธ ๋ฐ ์๋ ํ์ผ๋ค์ ์ง์๋ฒ๋ฆฌ๋? ๊ทธ๋ฐ node์ด๋ฏธ์ง๋ผ๊ณ ํจ
์ค์ ๋ก ํด๋น ์ฝ๋๋ก ๋น๋ํ๊ณ docker images๋ช ๋ น์ด๋ก ํ์ธํด๋ณด๋ฉด web ์ด๋ฏธ์ง๊ฐ ์ฐจ์งํ๋ ์ฉ๋์ด ํ ์ค์ด๋๋ ๊ฒ์ ํ์ธํ ์ ์์
(2) .dockerignore ํ์ผ ์์ฑ
๊ฐ์ ๋๋ ํ ๋ฆฌ์ node_modules๋ผ๋ ํด๋๊ฐ ๋ณด์ด๋๋ฐ, ์ด ํด๋๋ ์ด๋ฏธ์ง์ ํฌํจ์ํค์ง ์๋๋ก ํด๋ณด์.
.gitignoreํ์ผ์ฒ๋ผ docker๋ .dockerignore ํ์ผ์ ์์ฑํ ์ ์๋ค.
์๋์ ๋ด์ฉ์ ์์ฑํ๋ค.
node_modules/*
(3) build๋ช ๋ น์ด๋ก web ์ด๋ฏธ์ง ์์ฑ
docker build -t web .
์ด๋ฆ์ด web์ธ ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๋ค. ์ฒ์ ๋น๋๋ฅผ ํ๋ ๊ฒฝ์ฐ์๋ ์ค๋๊ฑธ๋ฆฌ์ง๋ง ๋ ๋ฒ์งธ๋ถํฐ๋ ๋์ปค๊ฐ ์บ์๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๊ธ๋ฐฉ ๋น๋๊ฐ ๋๋๋ค.
๊ทธ๋ฌ๋ ๋ง์ฝ ํ์ผ ๋ด์ฉ์ด ์์ ๋๊ณ ๋ค์ ๋น๋๋ฅผ ํ๋ ๊ฒฝ์ฐ ์บ์๊ฐ ๊นจ์ง๊ธฐ ๋๋ฌธ์ ์ผ๋ถ๊ฐ ์์ ๋๋๋ผ๋ ๋ค์ ๋น๋ ์์ ์ ์ํํ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
(4) web์ด๋ฏธ์ง๋ก ์ปจํ ์ด๋ ์์ฑ
docker run --rm -d -p 3000:3000 web
web ์ด๋ฏธ์ง ํฌํธ 3000๋ฒ๊ณผ ๋ก์ปฌ์ 3000๋ฒ์ ์ฐ๊ฒฐํ์ฌ ์ปจํ ์ด๋๋ฅผ ์์ฑํ๋ค, http://127.0.0.1:3000/๋ก ์ ์ํด๋ณด๋ฉด ๋ ธ๋ ์น ํ์ด์ง๊ฐ ์ ๋์ํ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
'DevOps > Docker' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Docker] ๋์ปค ๋ฐฐํฌ ๊ฐ๋ (0) | 2022.01.20 |
---|---|
[Docker] ๋์ปค ์ด๋ฏธ์ง ๋ง๋ค๊ธฐ1 (0) | 2022.01.20 |
[Docker] ๋์ปค ์ปดํฌ์ฆ ์ฌ์ฉํ๊ธฐ (0) | 2022.01.18 |
[Docker] network์์ฑ๊ณผ volume mount (-v) ๋ช ๋ น์ด (0) | 2022.01.18 |
[Docker] ๋์ปค ๊ธฐ๋ณธ ๋ช ๋ น์ด run ์ฌ์ฉํ๊ธฐ (windows) (0) | 2022.01.18 |
๋๊ธ