Skip to content

Commit

Permalink
feat: post4 2차 작성
Browse files Browse the repository at this point in the history
  • Loading branch information
wish0ne committed Jan 21, 2024
1 parent b1ed824 commit 11f83a5
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 0 deletions.
Binary file added posts/post4/image4-12.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
26 changes: 26 additions & 0 deletions posts/post4/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -264,6 +264,32 @@ docker run -p <로컬 포트번호:컨테이너 노출 포트번호> <이미지
이제 다시 <a>http://localhost:3000/</a>에 접속해보자. Hello World를 확인할 수 있다! 🎉
![컨테이너에서 실행한 웹서버](image4-6.png)

# 코드 변경사항 반영하기

만약 `Hello World`가 아니라, `Hello World~~!!`로 텍스트를 수정하고 싶으면 어떻게 할까?

컨테이너를 다시 실행하면 되지 않을까? `docker run -p 3000:3000 <이미지 id>` 명령을 통해 컨테이너를 다시 실행시켜보자.
![소스코드 변경 후 컨테이너 재실행](image4-6.png)

텍스트가 변경되지 않았음을 확인할 수 있다. 🥺

소스코드를 변경했는데 왜 반영되지 않았을까? 이를 이해하려면 이미지가 작동하는 방식을 이해해야 한다.

Dockerfile의 `COPY` 명령을 통해, 로컬의 소스코드 전부를 컨테이너 내부의 파일 시스템에 복사하도록 명령했다.
도커는 소스코드를 이미지에 복사하는데, 이 복사 시점에서 **소스코드의 스냅샷을 만든다**.
이후에 소스코드를 변경하면 이 변경사항은 이미지의 소스코드 스냅샷에 반영되지 않는다.
즉, **업데이트된 소스코드를 이미지로 새로 복사하려면, 이미지를 다시 빌드**해야한다.

이미지는 기본적으로 잠겨있고, 일단 한번 빌드되면 그걸로 끝이다.
이미지는 **read-only**이며, 과거에 로컬에서 코드를 복사해왔기 때문에, 로컬에서 코드를 변경하는 것만으로는 반영되지 않는다.
COPY 명령이 수행되면, 외부 코드를 변경해도 이미지는 영향을 받지 않는다. 반영하기 위해서는 이미지를 다시 빌드해야한다.

이제 변경사항을 반영하기 위해 이미지를 새로 빌드해보자.
이미지를 새로 빌드하게 되면 이미지 이름도 변경된다. (완전히 새로운 이미지이다.)

새 이미지 id를 통해 컨테이너를 실행하면 변경된 텍스트를 확인할 수 있다.
![재빌드한 이미지로 재실행한 컨테이너. 소스코드 변경사항이 반영되어있다.](image4-12.png)

---

> 해당 콘텐츠는 유데미로부터 강의 쿠폰을 제공받아 작성되었습니다.

0 comments on commit 11f83a5

Please sign in to comment.