如何避免Dockerfile中P@55w0rd值的冗余?
FROM microsoft/mssql-server-linux:2017-latest as sqlbase
WORKDIR /usr/src/app
COPY ./sql-scripts /usr/src/app
ENV MSSQL_SA_PASSWORD=P@55w0rd
ENV ACCEPT_EULA=Y
RUN /opt/mssql/bin/sqlservr --accept-eula & sleep 10 \
&& /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'P@55w0rd' -i ./init.sql \
&& pkill sqlservr发布于 2018-09-01 08:13:40
通常,我不会将任何密码直接放在Dockerfile上,原因有二:
在这种特殊情况下(这似乎是一种非生产情况)。同时使用ENV和ARG是最好的方法:
ARG MSQL_SERVER_VERSION=2017-latest
FROM microsoft/mssql-server-linux:$MSQL_SERVER_VERSION as sqlbase
WORKDIR /usr/src/app
COPY ./sql-scripts /usr/src/app
ARG MSSQL_SA_PASSWORD=P@55w0rd
ENV MSSQL_SA_PASSWORD $MSSQL_SA_PASSWORD
ENV ACCEPT_EULA=Y
RUN /opt/mssql/bin/sqlservr --accept-eula & sleep 10 \
&& /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P $MSSQL_SA_PASSWORD -i ./init.sql \
&& pkill sqlservr将MSSQL_SA_PASSWORD作为ARG并将其值分配给MSSQL_SA_PASSWORD环境变量可以使您的Dockerfile更加灵活。这还允许您在RUN命令中使用它来避免冗余。
您可以更多地了解ENV、ARG (及其作用域)如何在Dockerfile引用中工作。
发布于 2018-08-31 20:28:24
您可以在Dockerfile中使用ENV或ARG:
对于ex,可以使用ARG,如Dockerfile中所示:
FROM busybox
ARG user
USER $user当您使用ARG时,您必须在构建码头映像时传递以下值:
docker build --build-arg user=what_user 您还可以使用ENV,如Dockerfile中所示:
FROM ubuntu
ENV CONT_IMG_VER hello
RUN echo $CONT_IMG_VER您可以参考这获得更多信息。
https://stackoverflow.com/questions/52121348
复制相似问题