728x90
📢 회사에서 정적분석 도구 환경을 docker image로 만들었어요. 컨테이너 실행 및 간단한 명령 수행 후 바로 사라지게 하고 싶은데 환경 변수가 제대로 안읽혔어요..;;
🐳 "docker run --rm" 을 사용하자
docker container를 잠깐 실행하고, 끝나면 자동으로 삭제되게 하는 깔끔한 명령과 옵션이에요
docker run --rm my-image ls
이렇게 하면 ls 명령만 딱 실행 후 컨테이너가 사라지죠
❓근데 환경변수가 제대로 안나온다
Dockerfile 에서 분명 이렇게 환경 변수 설정 후 image를 생성했는데요
...
ENV MY_ENV=hello
아래와 같이 명령을 통해 출력하니 아무 값도 나오지 않았어요
docker run --rm my-image echo $MY_ENV
왜 그럴까요..??
🧠 문제의 원인: 해석 순서!
이 명령에서 $MY_ENV는 컨테이너 내부에서 해석되는 게 아니라, 호스트 쉘에서 먼저 해석돼버려요.
즉, Docker는 실제로 이렇게 실행한 거랑 똑같이 되어버립니다;;
docker run --rm my-image echo ""
그러니 아무 것도 안나오죠 😅
✅ 해결 방법: 내부에서 해석되게 만들기
컨테이너 안에서 $MY_ENV가 해석되게 하려면 "sh -c"를 써야 해요
docker run --rm my-image sh -c 'echo $MY_ENV'
이렇게 하면 'echo $MY_ENV' 전체가 문자 그대로 컨테이너에 전달되고,
컨테이너 안에서 $MY_ENV가 올바르게 출력됩니다
728x90
'TIL > 2025' 카테고리의 다른 글
| man-month? 맨먼스? 업무 공수 측정 단위 알아보기 (0) | 2025.04.21 |
|---|---|
| Shell Script를 리눅스 명령어처럼 쓰고 싶다면 (0) | 2025.04.15 |
| vi 에디터 라인 이동 하기 (0) | 2025.04.09 |
| QEMU Emulator(mps3-an536)에서 hello world 출력하기 (0) | 2025.04.05 |
| C/C++ 코드 빌드 과정 이해하기 (0) | 2025.02.14 |