๐ ์ด๋ฏธ์ง ํ์ผ ์ทจ์ฝ์ ๊ฒ์ฌ
์ด๋ฏธ์ง ํ์ผ์ ํฌํจ๋ ๋ชจ๋์ ์ทจ์ฝ์ ์ ๊ฒ์ฌํด์ค๋ค. ( Snyk )
Snyk ๊ฐ์ , ๋ก๊ทธ์ธ
docker scan --login
์ด๋ฏธ์ง ํ์ผ ๊ฒ์ฌ
docker scan <์ด๋ฏธ์ง>
๐ ์ด๋ฏธ์ง ํ์ผ ํ์คํ ๋ฆฌ ๊ฒ์ฌ
๋์ปค ์ด๋ฏธ์งํ์ผ์ด ๋ง๋๋ ์ปจํ ์ด๋ ์ ๋ณด ํ์ธ
docker image history <์ต์
> <์ด๋ฏธ์ง>
# --no-trunc : ์ ์ฒด ๋ด์ฉ ๋ณด๊ธฐ
๐ ์ด๋ฏธ์ง ์บ์ฑ์ด๋?
docker๋, ๊ธฐ์กด์ ์ด๋ฏธ์ง๋ฅผ ์ ๋ฐ์ดํธ ํ๊ณ ์ถ์๋
๋ณ๊ฒฝ์ฌํญ์ด ์๋ ๋ถ๋ถ์ ์ ์ธํ๊ณ ์ ๋ฐ์ดํธ ํ๋ค.
์ด๋ฅผ ์ด์ฉํ์ฌ, ๋น๋์๊ฐ์ ๋์ ๋๊ฒ ์ค์ผ ์ ์๋ค.
( package.json ์ข ์์ฑ ํจํค์ง๋ฅผ ๋ค์ ์ค์นํ ํ์์๋๋ก ๋ง๋ค๊ธฐ. )
๊ธฐ์กด ๋์ปคํ์ผ
FROM node:12-alpine
RUN apk add --no-cache python2 g++ make
WORKDIR /app
# ์ด๋ฏธ์ง๋ฅผ ์์ฑํ ๋๋ง๋ค, node_modules ํด๋๊ฐ ๋ณต์ฌ๋๋ค ( ์ฉ๋์ด ํผ )
COPY . .
RUN yarn install --production
CMD ["node", "src/index.js"]
EXPOSE 3000
๋น๋์, ๋ฌด์ํ ํ์ผ ์ง์
# .dockerignore ํ์ผ ์์ฑ ( Dockerfile ๊ฒฝ๋ก )
# ๋ฌด์ํ ํด๋, ํ์ผ ์ ์ด์ฃผ๊ธฐ
node_modules
๋์ปคํ์ผ ์์
FROM node:12-alpine
RUN apk add --no-cache python2 g++ make
WORKDIR /app
# package.json, yarn.lock ํ์ผ์, ์ปจํ
์ด๋ ์ ./ ๊ฒฝ๋ก์ ์ถ๊ฐ
COPY package.json yarn.lock ./
# ์ข
์์ฑ ํจํค์ง ์ค์น
RUN yarn install --production
# host ํ์ฌ๊ฒฝ๋ก ํ์ผ๋ค์, ์ปจํ
์ด๋ ํ์ฌ๊ฒฝ๋ก์ ๋ชจ๋ ์ถ๊ฐ (node_modules ์ ์ธ๋จ)
COPY . .
CMD ["node", "src/index.js"]
EXPOSE 3000
์ด๋ฏธ์ง ํ์ผ ์๋ก ๋ง๋ค๊ธฐ ( ๋น๋ )
docker build -t getting-started .
๐ ๋ค๋จ๊ณ ๋น๋๋?
๋ฐํ์ ๋จ๊ณ์, ๋น๋ ๋จ๊ณ๋ฅผ ๋ถ๋ฆฌํ์ฌ ์ปจํ ์ด๋๋ฅผ ์์ฑํ๋ ๊ฒ ( ์ข์ ๋ณด์, ์ฌ๋ฐ๋ฅธ ์๋ - ์๋์ )
์ฑ์ ์คํํ๋๋ฐ ํ์ํ ๊ฒ๋ง ์ ๊ณตํ์ฌ, ์ ์ฒด ์ด๋ฏธ์ง ํฌ๊ธฐ ์ค์ด๊ธฐ
Maven / Tomcat ์์
Tomcat์ java ํ๋ก๊ทธ๋จ์ด๋ฏ๋ก, ๋ฐ์ด๋๋ฆฌ ํ์ผ๋ก ์ปดํ์ผํ๊ธฐ ์ํ JDK๊ฐ ํ์ํ๋ค.
ํ์ง๋ง ํ๋ก๋์ ๋จ๊ณ์์ ํ์ํ์ง ์๋ค.
ํ๋ก๋์ ๋จ๊ณ(๋น๋)์ ์ค์ ์คํ๋๋ ๋จ๊ณ(๋ฐํ์)๋ฅผ ๊ตฌ๋ถํด, ์ฑ์ด ํจ์จ์ ์ด๊ณ ์ฌ๋ฐ๋ฅด๊ฒ ๋์ํ๋๋ก ํ๋ค.
( Maven ์ด๋ Gradle ์ด์ฉํด์ ์ฑ์ ๋น๋ ํ ์๋ ์๋ค. )
# Maven ์ด๋ฏธ์ง ์ด์ฉ, build๋ก ๋จ๊ณ ์ง์
FROM maven AS build
WORKDIR /app
COPY . .
# java ๋น๋ ( file.war ์์ฑ )
RUN mvn package
FROM tomcat
# build ๋จ๊ณ์์ ์์ฑ๋ file.war ํ์ผ์ tomcat ๋๋ ํ ๋ฆฌ๋ก ๋ณต์ฌ
COPY --form=build /app/target/file.war /usr/local/tomcat/webapps
React ์์
# node ์ด๋ฏธ์ง ์ฌ์ฉ, build ๋จ๊ณ๋ก ์ง์
FROM node:12 AS build
WORKDIR /app
COPY package* yarn.lock ./
RUN yarn install
COPY public ./public
COPY src ./src
RUN yarn run build
# nginx ์ด๋ฏธ์ง ์ฌ์ฉ
FROM nginx:alpine
# build ๋จ๊ณ์์ ์์ฑ๋ build ํด๋๋ฅผ, nginx ๋๋ ํ ๋ฆฌ๋ก ๋ณต์ฌ
COPY --from=build /app/build /usr/share/nginx/html
๋ฐ์ํ