์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- ์๋ฐ
- ๋ค์ค ์ปจํ ์ด๋
- nGrinder
- jvm ๋ฐ๋ฐ๋ฅ๊น์ง ํํค์น๊ธฐ
- ํ๋ก๊ทธ๋๋จธ์ค ํฉ์นํ์์๊ธ
- aws ์ฟ ํฐ
- s3 ์ด๋ฏธ์ง ๋ค์ด๋ก๋
- JPA
- ํ๋ก๊ทธ๋๋จธ์ค
- redis ํ ์คํธ์ฝ๋
- ์๋ฒ ํฐ์ง๋ ๋์ปค ์ฌ์คํ
- redis ์กฐํ
- ์คํํ๋ ๋ฏธ์ค
- Kafka
- aws saa ํฉ๊ฒฉ
- s3 ์ด๋ฏธ์ง ์ ์ฅ
- ์ ํจ์ค ์ค์ผ์ค๋ฌ
- docker
- private subnet ec2 ๋ก์ปฌ ์ ์
- prod docker-compose
- Codedeploy ์ค๋ฅ
- docker-compose kafka
- Entity
- s3 log ์ ์ฅ
- AWS Certified Solutions Architect - Associate
- docker compose
- ํ๋ก๊ทธ๋๋จธ์ค ์ปฌ๋ฌ๋ง๋ถ
- docker ps -a
- ์ ํจ์ค ๋น๋ ์ค๋ฅ
- ํ์ดํผ๋ฐ์ด์
- Today
- Total
๐๐ข๐๐ โ๐๐๐ ๐๐๐ก๐๐ ๐๐๐๐โง
[Docker] Dockerfile, ์ปจํ ์ด๋ ์์ฑํ ์คํํ๊ธฐ ๋ณธ๋ฌธ
[Docker] Dockerfile, ์ปจํ ์ด๋ ์์ฑํ ์คํํ๊ธฐ
๐คRyusun๐ค 2024. 3. 9. 22:17๋์ปค์ ์ฅ์
- ํ์ดํผ ๋ฐ์ด์ ๊ตฌ์กฐ๋ฅผ ํ ๋๋ก ๋ฑ์ฅํ์ผ๋ฉฐ, VM๋ณด๋ค ํจ์ฌ ๊ฐ๋ณ๊ฒ ๋์ํ๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅ์ ์ ๋ฆฌ!
์ด๋ฏธ์ง
- ์ฝ๋, ๋ฌํ์, ์์คํ
๋๊ตฌ, ์์คํ
๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ์ค์ ๊ณผ ๊ฐ์ ์์ฉ ํ๋ก๊ทธ๋จ์ ์คํํ๋๋ฐ ํ์ํ ๋ชจ๋ ๊ฒ์ ํํจํ๋ ํจํค์ง
- ์ปจํ
์ด๋๋ ๋์ปค ์ด๋ฏธ์ง๋ฅผ ๋
๋ฆฝ๋ ๊ณต๊ฐ์์ ์คํ ํ ์ ์๊ฒ ํด์ฃผ๋ ๊ธฐ์
- ์ฆ ํ๋ก๊ทธ๋จ์ ์คํํ๋๋ฐ ํ์ํ ์ค์ ์ด๋ ์ข
์์ฑ๋ค์ ๊ฐ์ง๊ณ ์๋ค.
- ์ปจํ
์ด๋๋ ์ด๋ฏธ์ง ์ธ์คํด์ค์ด๋ฉฐ, ํ๋ก๊ทธ๋จ์ ์คํํ๋ค.
Docker Compose๋
- ๋ฉํฐ ์ปจํ
์ด๋ ๋์ปค ์ดํ๋ฆฌ์ผ์ด์
์ ์ ์ํ๊ณ ์คํํ๋ ๋๊ตฌ
- Application, Databse, Redis, Nginx ๋ฑ ๊ฐ ๋
๋ฆฝ์ ์ธ ์ปจํ
์ด๋๋ก ๊ด๋ฆฌํ๋ค๊ณ ํ์๋ ๋ค์ค ์ปจํ
์ด๋ ๋ผ์ดํ ์ฌ์ดํด์ ์ฌ๋ฌ๊ฐ์ ๋์ปค ์ปจํ
์ด๋๋ก๋ถํฐ ์ด๋ฃจ์ด์ง ์๋น์ค๋ฅผ ๊ตฌ์ถ ๋ฐ ๋คํธ์ํฌ ์ฐ๊ฒฐ, ์คํ ์์๋ฅผ ์๋์ผ๋ก ๊ด๋ฆฌํ๋ค.
- docker-compose.yml ํ์ผ์ ์์ฑํ์ฌ 1ํ ์คํํ๋ ๊ฒ์ผ๋ก ์ค์ ๋ ๋ชจ๋ ์ปจํ
์ด๋๋ฅผ ์คํํ ์ ์๋ค.
๋์ปค ์ปจํ ์ด๋๋ฅผ ์คํ์์ผ๋ณด์!
1. jar ํ์ผ ์์ฑ
์ฐ์ buildํ๊ธฐ ์ฝ๊ฒ build.gradle์์ jar ํ์ผ ์ด๋ฆ ๋ณ๊ฒฝํ๋ค.
bootJar {
archiveFileName = ‘app.jar’
}
gradle wrapper ๋ฅผ ์ด์ฉํ์ฌ jar ํ์ผ ์์ฑ
$ gradlew clean build (Window)
$ ./gradlew clean build ( Linux, OSX)
์์ฑ๋ jarํ์ผ์ ๊ธฐ๋ณธ ๊ฒฝ๋ก๋ ํ๋ก์ ํธ์ build/libs/*.jar ์ด๋ค.
2. Dockerfile ์์ฑํ๊ธฐ
Dockerfile ์ด๋ ๋์ปค ์ด๋ฏธ์ง๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ํด ์์ด์ผ ํ ํจํค์ง, ์์กด์ฑ, ์์ค์ฝ๋ ๋ฑ์ ํ๋์ file๋ก ๊ธฐ๋กํ์ฌ ์ด๋ฏธ์งํ ์ํฌ ๋ช ๋ น ํ์ผ์ด๋ค. ์ฆ, ์ด๋ฏธ์ง๋ ์ปจํ ์ด๋๋ฅผ ์คํํ๊ธฐ ์ํ ๋ชจ๋ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ๋ ์ด์ ์๋ก์ด ์๋ฒ๊ฐ ์ถ๊ฐ๋๋ฉด ์์กด์ฑ ํ์ผ์ ์ปดํ์ผํ๊ณ ์ด๊ฒ ์ ๊ฒ ์ค์นํ ํ์๊ฐ ์๋ค!
๋์ปค ์ปจํ ์ด๋๋ฅผ ๋์ฐ๊ธฐ ์ํด์๋ Dockerfile์ ์์ฑํด๋ณด์.
์ธํ ๋ฆฌ์ ์ด์ ๋ฃจํธ ๋๋ ํ ๋ฆฌ์ Dockerfileํ์ผ์ ์์ฑํ๋ค.
$ FROM openjdk:11
$ ARG JAR_FILE=build/libs/app.jar
$ COPY ${JAR_FILE} ./app.jar
$ ENV TZ=Asia/Seoul
$ ENTRYPOINT ["java”, “-jar”, “./app.jar"]
FROM openjdk:11 = ์ด๋ค ๋ฒ ์ด์ค ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค์ง ์ค์
ARG JAR_FILE-build/lib/app.jar = ๋ณ์ ์ค์ (jar์์น ๊ฒฝ๋ก)
COPY ${JAR_FILE} ./app.jar = ์ด ๊ฒฝ๋ก์ ์๋ jar๋ฅผ ๋์ปค ์ปจํ
์ด๋ ๋ด๋ถ๋ก ๋ณต์ฌ
ENV = TZ=Asia/Seoul = ํ๊ฒฝ๋ณ์ ํ์์กด ์ค์
ENTRYPOINT [“java”, “-jar”, “./app.jar"] = ์ปจํ
์ด๋๊ฐ ์คํ๋ ๋ ์ด๋ค ๋ช
๋ น์ด๊ฐ ์คํ๋์ผ ํ ์ง๋ฅผ ์ง์ . ํด๋น ๋ช
๋ น์ด๋ฅผ ์ด์ฉํด์ ๋์ปค ์ปจํ
์ด๋ ๋ด๋ถ์์ ์คํ์ํฌ์ ์๋๋ก ํ๋ค.
3. Docker ์ปจํ ์ด๋ ์์ฑ ๋ฐ ์คํํ๊ธฐ
๋์ปคํ์ผ์ ์ด์ฉํด์ ๋์ปค ์ด๋ฏธ์ง๋ฅผ ์์ฑํ์.
//docker build -t [docker hub id]/[์ด๋ฏธ์ง ์ด๋ฆ:ํ๊ทธ] [Dockerfile์ ๊ฒฝ๋ก] // docker hub id๋ฅผ ์ด์ฉํ์ฌ repository ์ฐพ๊ธฐ
docker build -t ryusunny/creditmarket-app .
์ ์์ ์ผ๋ก build๊ฐ ๋์์ผ๋ฉด
docker images
๋ฅผ ํตํด์ ์ด๋ฏธ์ง๋ฅผ ํ์ธํด๋ณธ๋ค.
์์ฑ๋ ๋์ปค์ด๋ฏธ์ง๋ฅผ ํตํด์ ๋์ปค ์ปจํ ์ด๋๋ฅผ ์์ฑ ๋ฐ ์์ํ๋ค.
docker run ๋ช ๋ น์ด๋ฅผ ํตํด ์ปจํ ์ด๋ ์์ฑ ๋ฐ ์์
$ docker run creditmarket-app -p 8080:8080
--name: ์ปจํ ์ด๋ ์ด๋ฆ ์ง์
-p: ์ปจํ ์ด๋๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ธ๋ถ์ ๊ฒฉ๋ฆฌ๋์ด ์๊ธฐ ๋๋ฌธ์ ํธ์คํธ์ ์ปจํ ์ด๋ port ํฌ์๋ฉ ์ฒ๋ฆฌํ๋ค.
์ด๋ฏธ์ง๋ฅผ ์ง์ ํ์ง ์๊ณ docker run ๋ช ๋ น์ด๋ง ์์ฑํ ๊ฒฝ์ฐ ์ด๋ฌํ ์๋ฌ ๋ฉ์ธ์ง๊ฐ ๋ํ๋๋ค.
docker: "run" requires at least 1 argument.
See 'docker run --help'.
๋์ปค ์ปจํ ์ด๋๊ฐ ์คํ์ค์ธ์ง ํ์ธํ๋ค.
$ docker ps -a
๊ทธ์ธ ๋ช ๋ น์ด
$ docker ps
$ docker ps -a
$ docker exec -it [์ปจํ
์ด๋ ์ด๋ฆ ๋๋ id] /bin/bash // ์ปจํ
์ด๋๋ฅผ sh, bash ๋ฑ์ ํฐ๋ฏธ๋ ํ๊ฒฝ์ผ๋ก ์ ๊ทผ
$ docker stop [์ปจํ
์ด๋ ์ด๋ฆ ๋๋ id]
$ docker inspect [์ปจํ
์ด๋ ์ด๋ฆ ๋๋ id]