我正在尝试构建以下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 .
构建图像并使用
docker run -it my_tor /bin/ash
并运行cat /etc/tor/torrc
,我看到了
ControlPort 9051
HashedControlPassword
换句话说,最后torrc
似乎不包含散列密码。但是,我的Ubuntu终端中的类似命令可以正常工作。有谁能发现问题所在?
答案 0 :(得分:2)
您可以使用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
运行容器时提供这些内容会更好。