๐ ํด๋น ํฌ์คํ ์ ์๋์ ๊ฐ์๋ฅผ ๊ณต๋ถํ ๋ด์ฉ์ ๊ธฐ๋กํ์์ต๋๋ค.
https://www.inflearn.com/course/%EB%8F%84%EC%BB%A4-%EC%9E%85%EB%AC%B8/dashboard
1. node ์น ์ดํ๋ฆฌ์ผ์ด์ ๋ง๋ค๊ธฐ
์ด๋ฒ ์ค์ต์์๋ Nodejs ํ๋ก๊ทธ๋จ๊ณผ fastify ์น ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋์ปค ์ด๋ฏธ์ง๋ฅผ ์์ฑํด๋ณด์.
๋จผ์ fastify ํํ์ด์ง๋ฅผ ์ฐธ๊ณ ํด์ ์ค์น๋ฅผ ์งํํ๋ค.
(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 |
๋๊ธ