inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

비전공자도 이해할 수 있는 Docker 입문/실전

[실습] 백엔드 프로젝트(Nest.js)를 Docker로 실행시키기

.dockerignore

275

jaehong2782

작성한 질문수 5

0

스크린샷 2025-01-28 오후 12.18.26.png

[실습] 백엔드 프로젝트(Nest.js)를 Docker로 실행시키기 강의에서

.dockerignorenode_modules를 지정해주었는데 컨테이너 내부에 node_modules가 들어가져있습니다.

영상에서 강사님 컨테이너에도 node_modules가 있는데 맞는건가요?

- 추가
.dockerignoreREADME.md 파일을 지정하고 빌드하니 README.md는 제외된 것 같습니다. node_modules는 파일이 아니라 디렉토리라 /를 붙여줘야하는 걸까요?

아! 생각해보니 node_modulesCOPY한게 아니라 npm install의 결과물이군요!

docker docker-compose docker-volume docker-image container ecr

답변 2

0

JSCODE 박재성

안녕하세요 jaehong2782님! 질문 잘 주셨습니다:D

하나씩 답변 드려볼게요!


영상에서 강사님 컨테이너에도 node_modules가 있는데 맞는건가요?

-> 네! 맞습니다. 컨테이너 내부에 node_modules가 있는 이유는

Dockerfile에 작성해놓은 npm install이라는 명령어를 실행시켰기 때문입니다.

npm install의 명령어를 실행시키게 되면 node_modules 폴더가 생기게 됩니다.

.dockerignorenode_modules를 쓴 이유는 Dockerfile에서의 COPY . .의 명령어가 작동할 때

node_modules 폴더가 복사되는 작업을 방지하기 위해서입니다.


아! 생각해보니 node_modulesCOPY한게 아니라 npm install의 결과물이군요!

-> 답변을 다 하고 난 다음에 스스로 깨달으신 걸 이제 확인했네요ㅎㅎㅎ


 

또 궁금하신 점 생기시면 질문 남겨주세요~~

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. jaehong2782님!

Docker를 사용하여 프로젝트를 설정하는 과정에서 .dockerignore 파일이 예상대로 작동하지 않는 문제를 겪고 계시군요.

.dockerignore 파일은 Docker 이미지 빌드 시, 컨텍스트에 포함시킬 파일과 디렉토리를 필터링하는 역할을 합니다. 일반적으로 node_modules 디렉토리가 .dockerignore에 포함되면 이 디렉토리가 빌드 컨텍스트에 포함되지 않는 것이 맞습니다. 하지만 아래 체크리스트를 확인해보세요:

  1. 경로 확인: .dockerignore 파일의 경로가 Dockerfile과 동일한 디렉토리에 위치해야 합니다. 두 파일이 동일 디렉토리에 있어야 .dockerignore 룰이 올바르게 적용됩니다.

  2. 파일 형식: node_modules 는 디렉토리이므로 .dockerignore 파일에선 일반적으로 node_modules 와 같이 명시합니다. 별도로 /node_modules/ 와 같은 슬래시는 필요하지 않습니다.

  3. 상대 경로 설정: .dockerignore 에서의 경로는 Docker 빌드 컨텍스트의 루트 경로로부터 상대적으로 해석됩니다. 디렉토리 또는 파일의 경로를 정확히 지정해 주세요.

  4. 캐시 문제: 기존에 빌드된 캐시가 남아 있어서 잘못된 결과가 보일 수 있습니다. 이 경우, 캐시를 무시하고 새로운 이미지를 빌드해 보세요:

    docker build --no-cache -t <your-image-name>:<tag> .
    

추가로, .dockerignore 파일에서 README.md 가 무시되었다면 .dockerignore 파일 자체는 정상 작동 중으로 보입니다. node_modules 만 무시되지 않는다면 경로 문제 또는 캐시로 인한 문제일 가능성이 높습니다.

관련 문제 해결에 도움이 될 만한 공지와 답변은 아래 링크에서 확인하실 수 있습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

EC2 터미널에서 docker pull

0

64

2

AWS ECR

0

58

2

FROM openjdk:17-jdk 현재 기준 dockerhub에 없습니다

1

100

2

Redis 볼륨 설정?

0

117

2

컨테이너의 IP

0

80

2

도커 이미지를 만들 때 application.yml

0

105

2

compose.yml 관리

0

88

2

ECR 리포지토리에 이미지가 3개가 보입니다.

0

77

2

액세스 키 등록하는 시점 관련 질문이 있습니다.

0

83

1

depends_on에 따른 컨테이너 실행 순서

0

76

2

실제 웹 서비스 배포 시 질문

0

80

2

도커 volume 질문

0

67

3

HTTPS로도 받고 싶으면 docker compose에 443도 쓰면 될까요?

0

73

2

sql 볼륨 폴더 지우면 데이터베이스 데이터 날라가는거 아닌가요?

0

73

2

39강 도커파일 빌드 경로 질문이 있습니다.

0

70

2

도커파일 copy

0

70

2

실무에서 docker compose up --build를 할 때

0

186

2

mysql_data 폴더 내부에 다른 파일이 있는데도 잘 되는 경우

0

86

2

도커 허브에서 postgres 버전 확인하는 법

0

127

2

보충 자료와도 관련된 추가 내용

1

82

1

현업에서 MySQL은 RDS와 도커 볼륨 중 어떤 걸 사용하나요?

0

110

2

노션 자료에 안 보이는 이미지가 있습니다

0

101

1

도커 허브에서의 latest가 가장 최신인 게 맞나요?

0

121

2

docker image ls 실행 시 나오는 내용이 다릅니다

0

87

2