更改docker中的目录失败

更改docker中的目录失败,docker,docker-compose,dockerfile,alpine,Docker,Docker Compose,Dockerfile,Alpine,正在尝试使用alpine映像构建dockerfile并安装一组目录。下面是脚本。它在mkdir之前工作正常,但不会更改为/opt以下载git代码 git代码只能下载到/src。不确定cd/opt命令是否无效 FROM alpine ADD . /src WORKDIR /src RUN apk update RUN apk add git RUN mkdir /opt RUN cd /opt && git clone --recursive https://github.com

正在尝试使用alpine映像构建dockerfile并安装一组目录。下面是脚本。它在mkdir之前工作正常,但不会更改为/opt以下载git代码

git代码只能下载到/src。不确定cd/opt命令是否无效

FROM alpine
ADD . /src
WORKDIR /src
RUN apk update
RUN apk add git
RUN mkdir /opt
RUN cd /opt  && git clone --recursive https://github.com/Azure/azure-iot-sdk-python.git 
RUN ls -al 
RUN cd azure-iot-sdk-python && ls -al build_all/linux
每次运行
时,当前工作目录都会重置为最后一次
WORKDIR
的值

因此,这行代码运行cd azure iot sdk python&&ls-al build_all/linux
就是从这里开始的,您克隆的repo位于
opt

因此,这两种方法都将起作用:

RUN cd /opt/azure-iot-sdk-python && ls -al build_all/linux
以及:

每次运行
时,当前工作目录都会重置为最后一次
WORKDIR
的值

因此,这行代码运行cd azure iot sdk python&&ls-al build_all/linux
就是从这里开始的,您克隆的repo位于
opt

因此,这两种方法都将起作用:

RUN cd /opt/azure-iot-sdk-python && ls -al build_all/linux
以及:


Robert是对的,您可以通过遵循Dockerfile最佳实践避免此问题,只运行一次,请参见

Robert是对的,您可以通过遵循Dockerfile最佳实践避免此问题,只运行一次,请看

为什么不再次使用
WORKDIR
?我可以这样做,但想知道为什么上面的命令不起作用。如果它的ubuntu工作正常。为什么不再次使用
WORKDIR
?我可以这样做,但想知道为什么上面的命令不起作用。如果它的ubuntu工作正常。