Пароли в Dockerfile - PullRequest
       13

Пароли в Dockerfile

0 голосов
/ 31 августа 2018

Как избежать избыточности в 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

Ответы [ 2 ]

0 голосов
/ 01 сентября 2018

В общем случае я бы не стал вводить пароль непосредственно в Dockerfile по двум причинам:

  • Получите ваш 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 .

0 голосов
/ 31 августа 2018

Вы можете использовать ENV или ARG внутри Dockerfile:

Например, вы можете использовать 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

Вы можете обратиться к этой для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...