바인드 마운트 덮어씌우기 문제 해결

도커 컨테이너에 익명 볼륨을 추가해 외부에서 덮어쓰면 안될 폴더를 지정

덮어씌워지지 않는 이유, 도커는 항상 컨테이너에 설정하는 모든 볼륨을 평가하며, 충돌이 있는 경우에는 더 긴 '내부' 경로를 우선하기 때문이다.

/app 보다 /app/node_modules 가 더 구체적이므로 덮어씌워지지 않는다.

 

추가로 아래 설정을 하면, 런타임 환경에서 코드가 바로 반영되니 개발 시 리빌드하여 재구동할 필요가 없다.

 

단, 개발중에만 실시간 코드 확인 위해 바인드 마운트를 사용하지 실제 운영에선 바인드 마운트를 사용하지 않을 것이다.

소스가 업데이트 일도 없고 보안 문제도 있다.

 

 

dockerignore

COPY 명령으로 복사하면 안될 것들 정의

 

로컬에 nodeJS 서버를 사용한다면 아래를 추가하는 것이 좋다.

만약 로컬에서  npm install 생성된 모듈이있으면, 컨테이너 구동 생성된 node_modules 덮어씌워짐

 

환경변수

--env, -e

docker run 사용할 환경변수 등록 방법

$ 환경변수임을 알리는 기호

 

여러 개도 가능 약어로 -e PORT=123 가능

대문자는 관례로 가급적 지키는 것이 좋다.

 

 

--env-file 환경변수 파일을 지정

환경변수는 직접 읽을 이름을 Dockerfile 지정하면되기에 관례에 따른 이름을 짓는다.

 

./ 현재 위치

 

 

 

환경 변수 & 보안

환경 변수에 저장하는 데이터의 종류에 따라, 보안 데이터를 Dockerfile에 직접 포함하지 않을 때 유용하다.

환경 변수나 환경 변수 파일은 런타임 시에 적용되기 때문이다.

 

빌드 인수(ARG)

--build-arg

이 인수는 Dockerfile에서만 사용할 수 있다. 단, Dockerfile에서도 모든 명령에 사용할 수 있는 건 아니다

예를 들어, CMD에서 사용할 수 없다.

ARG는 컨테이너가 시작될 때 실행되는 런타임 명령이기 때문이다.

다른 모든 명령에선 'ARG'를 사용할 수 있다

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+ Recent posts