如何将命令输出replace为string并将其附加到文件(在Docker中运行的Alpine Linux中)
我正在尝试构build下面的Dockerfile:
FROM alpine:latest EXPOSE 9050 9051 RUN apk --update add tor RUN echo "ControlPort 9051" >> /etc/tor/torrc RUN password_hash=$(tor --hash-password "foo") RUN echo "HashedControlPassword $password_hash" >> /etc/tor/torrc CMD ["tor"]
我正在试图添加行HashedControllPassword [pw]
到/ etc / tor / torrc,其中[pw]
是由命令tor --hash-password "foo"
。 (在本例中,我使用“foo”作为密码)。
如果我使用docker build --tag my_tor .
构build图像docker build --tag my_tor .
并使用input命令行
docker run -it my_tor /bin/ash
并运行cat /etc/tor/torrc
,我明白了
ControlPort 9051 HashedControlPassword
换句话说,最后torrc
似乎并不包含散列的密码。 不过,在我的Ubuntuterminal中的类似的命令工作。 任何人都可以发现问题是什么?
你可以使用ARG
FROM alpine:latest EXPOSE 9050 9051 ARG password RUN apk --update add tor RUN echo "ControlPort 9051" >> /etc/tor/torrc RUN echo "HashedControlPassword $(tor --hash-password $password)" >> /etc/tor/torrc CMD ["tor"]
然后使用:
docker build --build-arg password=foo Dockerfile
一般来说,我不会在图像中烘焙密码。 在使用-e
运行容器时提供这些东西会更好。