Dockerfile内的环境变量

nnsrf1az  于 2023-01-12  发布在  Docker
关注(0)|答案(1)|浏览(278)

正如你所注意到的,我正在尝试建立一个docker映像,我将当前的GID/UID分配给usermod/groupmod命令,我将在docker映像中运行该命令。
我尝试了带有环境变量的命令,但它不工作
1002和1003是被连接用户的用户GID/UID

FROM mongo:4.4.9

# setup folder before switching to user
RUN mkdir /var/lib/mongo
RUN usermod -u 1002 mongodb
RUN groupmod -g 1003 mongodb
RUN chown mongodb:mongodb /var/lib/mongo
RUN chown mongodb:mongodb /var/log/mongodb

USER mongodb

我试过这个:

FROM mongo:4.4.9

ENV MONGO_UID=$MONGO_UID
ENV MONGO_GID=$MONGO_GID

# setup folder before switching to user
RUN mkdir /var/lib/mongo
RUN usermod -u $MONGO_UID mongodb
RUN groupmod -g $MONGO_GID mongodb
RUN chown mongodb:mongodb /var/lib/mongo
RUN chown mongodb:mongodb /var/log/mongodb

USER mongodb

并以此来建造
docker build --build-arg MONGO_UID=1002 --build-arg MONGO_GID=1003 .
谢谢你的帮助!

11dmarpk

11dmarpk1#

您需要将它们声明为参数,而不是环境变量,因为您将参数作为--build-arg参数值传递给docker build命令。
Dockerfile应该如下所示:

FROM mongo:4.4.9

ARG MONGO_UID
ARG MONGO_GID

# setup folder before switching to user
RUN mkdir /var/lib/mongo
RUN usermod -u ${MONGO_UID} mongodb
RUN groupmod -g ${MONGO_GID} mongodb
RUN chown mongodb:mongodb /var/lib/mongo
RUN chown mongodb:mongodb /var/log/mongodb

USER mongodb

如果需要将它们作为容器中的环境变量,则需要说明ENV等于ARG

ARG MONGO_UID
ENV MONGO_UID=${MONGO_UID}

如果您感兴趣,也可以为argument(与ENV相同)指定default value

ARG MONGO_UID=default

没有默认值将强制用户为参数提供一个值。

相关问题