[Docker] 도커 숙제 #1

._mung·2024년 8월 26일
0

Docker

목록 보기
1/2

요즘 도커 스터디를 하고 있는데, 도커 스터디에서 받은 숙제를 벨로그에 정리를 해보려 한다.

📌 숙제 내용

숙제의 큰 틀은 nginx를 도커로 띄우는 거다.
1. Dockerfile 생성
2. docker로 nginx 실행
3. default.conf proxy_pass 설정
4. 포트포워딩(ping pong 테스트)
   - request(ping) -> container -> response(pong)

📌 숙제 과정

일단 nginx를 띄우기 위해 프로젝트를 하나 만들었다. 그 후 프로젝트 안에 dockerfile을 만들어서 넣어주었다.

1. Dockerfile 생성

# jdk21 Image Start
FROM openjdk:21

# 작업 디렉토리 설정
WORKDIR /app

# 인자 설정 - JAR_File
ARG JAR_FILE=build/libs/nginx_study-0.0.1-SNAPSHOT.jar

# JAR 파일을 작업 디렉토리로 복사
COPY ${JAR_FILE} /app/mung.jar

# 실행 명령어
ENTRYPOINT ["java", "-jar", "/app/mung.jar"]

2. docker로 nginx 실행
nginx를 실행하기 위해 일단 스프링 프로젝트를 jar로 빌드 후 도커에 띄워줬다.

docker build -t mung . 
docker run --name spring -d -p 8081:8080 mung

그 후 nginx 또한 도커로 띄워줬다.

docker run --name nginx -d -p 80:80 nginx

그 다음 둘을 이어주기 위해 nginx-network라는 docker network를 생성하여 두 컨테이너를 이어줬다.

docker network connect nginx-network spring
docker network connect nginx-network nginx

3. default.conf proxy_pass 설정

server {
    listen 80;

    location / {
        proxy_pass http://spring:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

위 설정을 통해 80포트로 오는 요청을 spring:8080으로 요청을 보낼 수 있게 했습니다.

@RestController
public class HealthCheckController {
    @GetMapping("/ping")
    public String ping() {
        return "pong";
    }
}

ping - pong 테스트를 위해 위와 같은 코드를 스프링 프로젝트에 작성했습니다.

4. 포트포워딩(ping pong 테스트)
이제 localhost/ping 으로 요청을 보내면 pong이라는 응답을 받는 것을 확인할 수 있습니다.
localhost 80포트로 요청을 보냈는데, localhost 8080의 spring에게 전달되어 ping이라는 응답을 받을 수 있습니다.

profile
💻 💻 💻

0개의 댓글

관련 채용 정보