39강 도커파일 빌드 경로 질문이 있습니다.
[01:57] 에 상대경로로 .을 찍으라고 돼있는데요.
그냥 절대경로 쓰는게 더 낫지 않나요?
절대경로로도 동작하는데, 귀찮게 디렉토리 이동해야 하는 상대경로를 쓰는 이유가 궁금합니다.
혹시 나중에 자동화할때 상대경로를 써야한다든지 등의 실무적인 이유가 있을까요?
제가 모르는 큰 그림이 있는지 궁금합니다.
回答 2
0
안녕하세요 ! 질문 잘해주셨어요 !
질문해 주신 내용에 대해 답변드려볼게요 ~
절대경로도 물론 동작은 하지만, 실무에서는 상대경로를 압도적으로 많이 사용해요 !
가장 큰 이유는 이식성 때문이에요 ~
프로젝트를 다른 환경이나 다른 사람의 컴퓨터로 옮겼을 때, 절대경로는 매번 수정해야 하지만 상대경로는 그대로 사용할 수 있어요 !
특히 협업 환경에서는 팀원마다 프로젝트를 저장하는 경로가 다를 수 있어서, 상대경로를 쓰면 각자 어디에 두든 상관없이 동일하게 작동하게 되요 !
말씀하신 자동화 부분도 맞아요 !
Jenkins, GitHub Actions 같은 CI/CD 파이프라인에서는 빌드 환경의 절대경로를 미리 알 수 없는 경우가 많아요 !
상대경로를 쓰면 어떤 환경에서든 자동으로 동작하게 되는 거죠 !
또한 Docker는 빌드 컨텍스트(Build Context)라는 개념을 사용하는데, .은 "현재 디렉토리를 빌드 컨텍스트로 사용하겠다"는 의미예요 !
이게 Docker의 표준 방식이고, 실무에서는 거의 모든 경우에 상대경로를 사용한다고 보시면 돼요 !
추가로 궁금하신 점 있으시면 편하게 질문 남겨주세요~~
0
안녕하세요, 인프런 AI 인턴입니다. 김성일님.
Dockerfile을 빌드할 때 .을 사용하여 현재 디렉토리를 지정하는 방법과 절대 경로를 사용하는 방법 두 가지가 있을 수 있습니다. 각 방법에는 저마다의 장단점이 있습니다.
상대 경로( . ) 사용의 이점
이식성:
.을 사용하면, Dockerfile이 포함된 프로젝트 폴더가 어디에 있더라도 동일하게 빌드가 가능합니다. 이는 특히 여러 사람이 협업하거나, CI/CD 환경에서 자동화 작업을 진행할 때 더 유리합니다.
단순성:
- 현재 작업 디렉토리에서만 명령을 실행하면 되므로, 명령어가 간단해지고 오류 가능성이 줄어듭니다. 디렉토리 이동 없이 작업할 수 있어 편리할 수 있습니다.
- 현재 작업 디렉토리에서만 명령을 실행하면 되므로, 명령어가 간단해지고 오류 가능성이 줄어듭니다. 디렉토리 이동 없이 작업할 수 있어 편리할 수 있습니다.
자동화:
- 상대 경로를 사용하는 것이 자동화 스크립트나 CI 설정에서 더 쉽게 적용될 수 있습니다. 이는 여러 환경에서 같은 스크립트를 적용할 때 유리합니다.
- 상대 경로를 사용하는 것이 자동화 스크립트나 CI 설정에서 더 쉽게 적용될 수 있습니다. 이는 여러 환경에서 같은 스크립트를 적용할 때 유리합니다.
절대 경로 사용의 이점
명백함:
- 접근할 경로가 명확하게 드러나므로, 빌드 위치를 혼동할 가능성이 적습니다.
- 접근할 경로가 명확하게 드러나므로, 빌드 위치를 혼동할 가능성이 적습니다.
유연성:
- 다양한 프로젝트 구조에서 자유롭게 파일을 위치시키는 경우, 절대 경로를 사용하여 정확한 위치를 지정할 수 있습니다.
- 다양한 프로젝트 구조에서 자유롭게 파일을 위치시키는 경우, 절대 경로를 사용하여 정확한 위치를 지정할 수 있습니다.
상대 경로를 사용하는 것이 번거롭다고 느껴질 수 있지만, 위에서 언급한 이식성과 자동화의 장점 때문에 실무에서는 상대 경로를 선호하는 경우가 많습니다. 특히 팀 내 일관성을 유지하고 모든 스크립트가 다양한 환경에서 동작할 수 있도록 하려면 상대 경로가 유리할 수 있습니다.
관련하여 더 많은 논의가 이루어질 수 있는 유사한 질문을 추천드립니다:
- Dockerfile 경로 설정의 중요성 - 경로 설정 관련한 깊이 있는 설명을 제공하는 질문입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
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
84
1
depends_on에 따른 컨테이너 실행 순서
0
77
2
실제 웹 서비스 배포 시 질문
0
80
2
도커 volume 질문
0
67
3
HTTPS로도 받고 싶으면 docker compose에 443도 쓰면 될까요?
0
74
2
sql 볼륨 폴더 지우면 데이터베이스 데이터 날라가는거 아닌가요?
0
74
2
도커파일 copy
0
70
2
실무에서 docker compose up --build를 할 때
0
191
2
mysql_data 폴더 내부에 다른 파일이 있는데도 잘 되는 경우
0
87
2
도커 허브에서 postgres 버전 확인하는 법
0
128
2
보충 자료와도 관련된 추가 내용
1
83
1
현업에서 MySQL은 RDS와 도커 볼륨 중 어떤 걸 사용하나요?
0
110
2
노션 자료에 안 보이는 이미지가 있습니다
0
101
1
도커 허브에서의 latest가 가장 최신인 게 맞나요?
0
122
2
docker image ls 실행 시 나오는 내용이 다릅니다
0
87
2
윈도우 볼륨 생성이 안됩니다.
0
78
2

