Dockerfile에서 컬의 구성 파일을 업로드한 후 일부 편집이 필요합니다. 다음은 예제 구조입니다.
client:
...
server:
applicationConnectors:
- type: http
port: 8989
# for security reasons bind to localhost
bindHost: localhost
requestLog:
appenders: []
adminConnectors:
- type: http
port: 8990
bindHost: localhost
이 두 매개변수를 편집해야 하는데 bindHost
, 해당 기간 동안 해당 값을 매개변수로 전달할 수 있으면 좋을 것 같은데 docker build
, 인터넷이나 문서에서 아무것도 찾을 수 없는 것 같습니다.
답변1
질문을 올바르게 이해했다면 Dockerfile 명령에서 컬을 sed로 파이프하십시오.
curl XXX | sed -e "s/bindHost: localhost/bindHost: ${your_variable}/g" > yourfile.yaml
또는 파일을 다운로드한 후 편집할 수 있습니다.
sed -ie "s/bindHost: localhost/bindHost: ${your_variable}/g" /path/to/your/file
답변2
"--build-arg"를 사용하여 Dockerfile에 값을 전달하고 해당 값을 호출에 사용할 수 있습니다. RUN sed
예를 들어 IP 주소 매개변수를 삽입합니다.
FROM whatever
COPY config.file /etc/config.file
ARG IPADDR
RUN sed -i -r "s/#IPADDR#/$IPADDR/g" /etc/config.file
다음을 사용하여 빌드할 수 있습니다.
docker build -t foobar --build-arg IPADDR=11.12.13.14 .
빌드 매개변수를 런타임 환경 변수로 변환할 수도 있습니다.
ARG ARGVAR
ENV ENVVAR $ARGVAR
구성 구문을 실행하지 않고 환경 변수 대체를 수행할 수 있다면 더 좋을 것입니다 sed
.
그러나 이는 이미지를 너무 구체적으로 만듭니다. 컨테이너를 시작할 때( , docker run
사용 ) 환경 변수를 설정하고 해당 값을 사용하여 구성 구문이 아닌 한 스크립트에서 구성 파일을 컨테이너 항목으로 즉시 편집할 수 있습니다. (또는 실행 매개변수) Envvar 대체가 가능합니다.--env
--env-list