ํฐ์คํ ๋ฆฌ ๋ทฐ
๐งธ ์ฌ๋ด์์ ์งํํ๋ ๋์ปค ์คํฐ๋๋ฅผ ์ค์ต ๋ฐ ์ ๋ฆฌํ๋ ๋ด์ฉ์ ์ ๋ฆฌํ ํฌ์คํ ์ ๋๋ค.
Dockerfile ๋ฌธ๋ฒ
- FROM
- ENV
- ADD
- COPY
- WORKDIR
- EXPOSE
- ENTRYPOINT
- RUN
- CMD
- USER
- ARG
- LABEL
- VOLUME
- ONBUILD
- STOPSIGNAL
- HEALTHCHECK
๋ณดํต FROM ์์ ์์ํด์ RUN, ENTRYPOINT, CMD๋ก ๋๋๋ค.
์๋ 5๊ฐ์ ๋ฌธ๋ฒ์ ์ ์์ด๋ค๊ณ ํ๋ค.
๐ป
์ฐ๋๋ผ๋ ๋์ปค ๊ณ ์๋ค์ด ์ด๋ค๊ณ ํ๋ค์.
์คํฐ๋ ๋ฉํ ๋์ LABEL๋ณด๋ค๋ ๋ณ์ ๋๋ ์ฃผ์์ผ๋ก ์ฒ๋ฆฌํ์๋ ํธ์ด๋ผ๊ณ ํ๋ค.
RUN vs CMD vs ENTRYPOINT
- RUN : ๋์ปคํ์ผ๋ก๋ถํฐ ๋์ปค ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๋ ์๊ฐ์ ์คํ
- CMD : ์ด๋ฏธ์ง๋ก๋ถํฐ ์ปจํ ์ด๋๋ฅผ ์์ฑํ์ฌ ์ต์ด๋ก ์คํํ ๋ ์ํ
- ENTRYPOINT : CMD์ ์ ์ฌํ๋ ์ปจํ ์ด๋ ์์ฑ๋๊ณ ์ต์ด๋ก ์คํํ ๋ ์ํ๋๋ ๋ช ๋ น์ด๋ฅผ ์ง์
CMD vs ENTRYPOINT
- CMD : docker run์ ์ํํ ๋ ๋ณ๊ฒฝ ๊ฐ๋ฅ
- ENTRYPOINT : docker run์ ์ํํ ๋ ๋ณ๊ฒฝ ๋ถ๊ฐ ⇒ ํญ์ ์คํ
Build ์ค์ต์ ํตํด CMD์ ENTRYPOINT ์ฐจ์ด์ ์ ์ง์ด๋ณด์.
# syntax=docker/dockerfile:1
FROM openjdk:11.0.14.1-jdk AS build
WORKDIR /app
COPY ./ ./
RUN ./gradlew bootjar
########
#deploy#
########
FROM openjdk:11.0.14-jdk-slim-buster
WORKDIR /
COPY --from=build /app/build/libs/*.jar /app/build/libs/example_spring.jar
EXPOSE 8080
CMD ["java", "-jar", "/app/build/libs/example_spring.jar"]
# ENTRYPOINT ["java", "-jar", "/app/build/libs/example_spring.jar"]
๋น๋ ์ ์ ๊ฐ ๋ฌธ๋จ์ด ์๋ฏธํ๋๊ฑธ ์ดํด๋ณด์.
dockerfile:1
dockerfile:1์ด ์๋ฏธํ๋๊ฑด ํ๊ทธ๋ค.
docker๊ฐ ๊ณต์์ผ๋ก ์ง์ํ๋ ๋์ปค ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๋ ๋์ปค ์ด๋ฏธ์ง๋ค.
1์ด๋ผ๋ ๊ฑด 1.x.x ๋ฒ์ ์ ๋ชจ๋ ํ์ฉํ๋ค๊ณ ์ดํดํ๋ฉด ๋๋ค.
FROM openjdk:11.0.14.1-jdk AS build
์ฌ๊ธฐ์ AS build๋ openjdk:11.0.14.1-jdk๋ฅผ build๋ผ๋ ๋ณ์นญ(alias)์ ๋ถ์ฌํ ๊ฑธ๋ก ์ดํดํ๋ฉด ๋๋ค.
WORKDIR /app, COPY ./ ./
WORKDIR๊ฐ /app ์ผ๋ก ์ก์์ผ๋ COPY ./ ์์ ./์ /app๋ค.
์ด์ CMD๋ก ๋จผ์ ๋น๋๋ฅผ ํด๋ณด์.
// ํ์ฌ ๋๋ ํฐ๋ฆฌ์ ์๋ dockerFile์ ์คํํ์ฌ tmp๋ผ๋ ์ด๋ฆ์ ์ด๋ฏธ์ง๋ก ๋ง๋ค๊ธฐ(๋น๋ํ๊ธฐ)
docker build . -t tmp
๋น๋ ํ docker run์ ํด๋ณด์.
docker run -p 8080:8080 tmp
๐ค
8080:8080์ ๋ฌด์์ ์๋ฏธํ ๊น?
๋์ปค ๋ด์ 8080 ํฌํธ๋ฅผ ๋ด ๋ก์ปฌ 8080 ํฌํธ์ ์ฐ๊ฒฐํ๋ค๊ณ ์๊ฐํ๋ฉด ๋๋ค.
CMD ๋ช ๋ น์ด๋ก run์ด ์๋ฃ๋๋ฉด ์ด์ ๋ CMD๋ฅผ ์ฃผ์ํ๊ณ ENTRYPOINT ์ฃผ์์ ํผ ๋ค, ๋ค์ build ๋ฐ run์ ํด๋ณด์.
๊ทธ ๋ค docker images๋ก ํ์ธํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ด๋ฏธ์ง๋ฅผ ๋ณผ ์ ์๋ค.
์ ์ด๋ฏธ์ง์ฒ๋ผ ๊ธฐ์กด tmp๋ ๊ทธ๋๋ก ์๊ณ ์ dockerfile๋ก ๋ง๋ ์ด๋ฏธ์ง๋ <none>์ด ๋๋ค.
์ด์ ๋ ๊ธฐ์กด์ tmp๋ผ๋ ์ด๋ฆ์ด ์๋ค๋ฉด ๋์ปค๊ฐ ์ค๋ณต์ ํ์ฉํ์ง ์๊ธฐ ์ํด <none>์ด๋ผ๋ ๊ฐ์ ์์๋ก ๋ฃ์ด์ฃผ๊ธฐ ๋๋ฌธ์ด๋ค.
๋ค์ ๋ช ๋ น์ด๋ฅผ ํตํด ์ด๋ฏธ์ง์ cmd์ entrypoint ํ๊ทธ๋ฅผ ๊ฐ๊ฐ ์ฃผ์ด ๊ตฌ๋ถํด์ฃผ์.
docker tag b55d5353eae9 tmp:cmd
-ti ์ต์ ์ ํตํด ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํด๋ด ์๋ค.
๐ค
-ti ์ต์ ์ด ๊ธฐ์ต์ด ์๋๋ค๋ฉด ์ด์ ํฌ์คํ ์ธ ๋์ปค ์คํฐ๋ [1]์ ์ฐพ์๋ณด์.
docker run -ti -p 8080:8080 tmp:entrypoint /bin/bash
entrypoint๋ ์คํ ์๋๊ณ , cmd๋ ์คํ๋๋ค.
docker run -ti -p 8080:8080 tmp:cmd /bin/bash
์์์ ์ธ๊ธํ๋ cmd์ entrypoint๋ฅผ ๋ค์ ์ง์ด๋ณด์.
์ ์์๋ก ๋ฏธ๋ฃจ์ด๋ดค์ ๋ cmd๋ run์ ์ํํ ๋ ๋ค๋ฅธ ๋ช ๋ น์ด๋ฅผ ์ค ์ ์๋ ๋ฐ๋ฉด์ ENTRYPOINT๋ ๋ฌด์กฐ๊ฑด dockerfile์ ์ ์๋๋๋ก๋ง ์คํ์ด ๋๋ ๊ฑธ ์ ์ ์๋ค.
๐ป
๋ณดํต์ cmd๋ก ๋น๋ํ๋ค๊ณ ํ๋ค.
dockerfile์์ ์์๋๋ฉด ์ข์ ๊ฒ
- . ์ผ๋ก ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ฆฌ๋ฏ๋ก .dockerignore๋ฅผ ํตํด ๋น๋๋ฅผ ์ํ ๊ฑธ ๊ฑธ๋ฌ๋ผ ์ ์๋ค.
- ๋น๋๋ ํฐ ๊ฑธ๋ก ์ฐ๊ณ ์คํ์ ์ํด slim alpine(์ํ์ธ)์ผ๋ก ์คํํ๋ค.
- alpine์ ์ปจํ ์ด๋ ๋ด๋ถ์์ ์ฌ์ฉํ๊ธฐ ์ํด ํน๋ณํ ์ ์๋ ์ด์์ฒด์ ๋ฅผ ์๋ฏธํ๋ค.
- ๋์ปค ๋ช
๋ น์ด ํ ์ค ํ ์ค์ ๋ ์ด์ด๋ผ๊ณ ํํํ๋ค.
- ๋ ์ด์ด๊ฐ ๋์ด๋๋ฉด ์บ์๊ฐ ์์ด๊ณ ๋ฐ๋ ๋ ์ด์ด๋ง ์ ๋ฐ์ดํธํ๋ค.
- ๋ง์ฝ ์ถ๊ฐ ๋ฐ ์์ ์ ํด์ผ ํ๋ค๋ฉด ๋ฎ์ ๋ ์ด์ด์ ํ๋๊ฒ ์ข๋ค.
- ์ค๊ฐ์ ๋ผ์๋ฃ์ผ๋ฉด ์๋ ์๋ ๋ ์ด์ด๋ ์๋ก ์ ๋ฐ์ดํธ๋๋ฏ๋ก ์๊ฐ์ด ๋๋ฆฌ๋ค.
docker์ ๋ํด์ ๊น๊ฒ ๋ค๋ฃฌ ๊ฒ์ด ์๋ ์ค์ต์ ํตํด ํต์ฌ๋ง ๋ฐฐ์ด ๊ฑธ ์ ๋ฆฌํ ํฌ์คํ ์ด๋ผ ๋ง์ด ๋ถ์กฑํ ์ ์์ต๋๋ค.
์ต๋ํ ๋น ๋ฅธ ์์ผ ๋ด์ ๋์ปค์ ๋ํ ๋ด์ฉ์ ๋ค๋ฃฌ ํฌ์คํ ์ผ๋ก ์ฐพ์๋ต๊ฒ ์ต๋๋ค.
'Infra > ๋์ปค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Dockerfile ์์๋ณด๊ธฐ (0) | 2023.01.15 |
---|---|
๋์ปค ์คํฐ๋ [1] - ์ปค๋งจ๋๋ก ์คํํด๋ณด๊ธฐ (0) | 2022.04.26 |
- Total
- Today
- Yesterday
- ์๊ณ ๋ฆฌ์ฆ
- programmers
- JPA
- ์ ๊ทํํ์
- ์ดํฉํฐ๋ธ ์๋ฐ
- BOJ
- Algorithm
- ์ฝํ
- ๋์์ธํจํด
- kkoon9
- BAEKJOON
- ๊ฐ์ฒด์งํฅ
- Olympiad
- kotest
- C++
- ๋ฐฑ์ค
- Spring Boot
- Spring
- ํด๋ฆฐ ์ฝ๋
- ํด๋ฆฐ ์ํคํ ์ฒ
- AWS
- ํ๋ก๊ทธ๋๋จธ์ค
- ๋์์ธ ํจํด
- ์ดํํฐ๋ธ ์๋ฐ
- Effective Java
- MSA
- Kotlin
- ํ ๋ผํผ
- node.js
- Java
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |