inflearn logo
강의

Course

Instructor

Introduction to Docker for Beginners and Practical Use: Even for Non-Majors

[Practice] FROM: Creating a Base Image

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

Resolved

71

hi5there

15 asked

0

[01:57] 에 상대경로로 .을 찍으라고 돼있는데요.

그냥 절대경로 쓰는게 더 낫지 않나요?

절대경로로도 동작하는데, 귀찮게 디렉토리 이동해야 하는 상대경로를 쓰는 이유가 궁금합니다.

혹시 나중에 자동화할때 상대경로를 써야한다든지 등의 실무적인 이유가 있을까요?

제가 모르는 큰 그림이 있는지 궁금합니다.

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

Answer 2

0

jscode

안녕하세요 ! 질문 잘해주셨어요 !

질문해 주신 내용에 대해 답변드려볼게요 ~

절대경로도 물론 동작은 하지만, 실무에서는 상대경로를 압도적으로 많이 사용해요 !

가장 큰 이유는 이식성 때문이에요 ~

프로젝트를 다른 환경이나 다른 사람의 컴퓨터로 옮겼을 때, 절대경로는 매번 수정해야 하지만 상대경로는 그대로 사용할 수 있어요 !

특히 협업 환경에서는 팀원마다 프로젝트를 저장하는 경로가 다를 수 있어서, 상대경로를 쓰면 각자 어디에 두든 상관없이 동일하게 작동하게 되요 !

말씀하신 자동화 부분도 맞아요 !

Jenkins, GitHub Actions 같은 CI/CD 파이프라인에서는 빌드 환경의 절대경로를 미리 알 수 없는 경우가 많아요 !

상대경로를 쓰면 어떤 환경에서든 자동으로 동작하게 되는 거죠 !

또한 Docker는 빌드 컨텍스트(Build Context)라는 개념을 사용하는데, .은 "현재 디렉토리를 빌드 컨텍스트로 사용하겠다"는 의미예요 !

이게 Docker의 표준 방식이고, 실무에서는 거의 모든 경우에 상대경로를 사용한다고 보시면 돼요 !

추가로 궁금하신 점 있으시면 편하게 질문 남겨주세요~~

1

hi5there

도움이 됐습니다. 감사합니다!

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. 김성일님.

Dockerfile을 빌드할 때 .을 사용하여 현재 디렉토리를 지정하는 방법과 절대 경로를 사용하는 방법 두 가지가 있을 수 있습니다. 각 방법에는 저마다의 장단점이 있습니다.

상대 경로( . ) 사용의 이점

  1. 이식성:

    • .을 사용하면, Dockerfile이 포함된 프로젝트 폴더가 어디에 있더라도 동일하게 빌드가 가능합니다. 이는 특히 여러 사람이 협업하거나, CI/CD 환경에서 자동화 작업을 진행할 때 더 유리합니다.
  2. 단순성:

    • 현재 작업 디렉토리에서만 명령을 실행하면 되므로, 명령어가 간단해지고 오류 가능성이 줄어듭니다. 디렉토리 이동 없이 작업할 수 있어 편리할 수 있습니다.
  3. 자동화:

    • 상대 경로를 사용하는 것이 자동화 스크립트나 CI 설정에서 더 쉽게 적용될 수 있습니다. 이는 여러 환경에서 같은 스크립트를 적용할 때 유리합니다.

절대 경로 사용의 이점

  1. 명백함:

    • 접근할 경로가 명확하게 드러나므로, 빌드 위치를 혼동할 가능성이 적습니다.
  2. 유연성:

    • 다양한 프로젝트 구조에서 자유롭게 파일을 위치시키는 경우, 절대 경로를 사용하여 정확한 위치를 지정할 수 있습니다.

상대 경로를 사용하는 것이 번거롭다고 느껴질 수 있지만, 위에서 언급한 이식성과 자동화의 장점 때문에 실무에서는 상대 경로를 선호하는 경우가 많습니다. 특히 팀 내 일관성을 유지하고 모든 스크립트가 다양한 환경에서 동작할 수 있도록 하려면 상대 경로가 유리할 수 있습니다.

관련하여 더 많은 논의가 이루어질 수 있는 유사한 질문을 추천드립니다:
- 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

190

2

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

0

87

2

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

0

128

2

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

1

83

1

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

0

110

2

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

0

101

1

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

0

121

2

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

0

87

2

윈도우 볼륨 생성이 안됩니다.

0

78

2