可以在 Dockerfile 中使用 pushd/popd 吗?
Possible to use pushd/popd in Dockerfile?
有什么方法可以在 Dockerfile 中使用 pushd/popd 命令吗?如果可能的话,它会让一些安装脚本变得容易得多。
可以做到,但你的图像必须有 bash 并且所有命令必须在同一个 RUN
指令中:
Dockerfile
FROM debian
RUN mkdir -p /test/dir1/dir2
RUN bash -xc "\
pushd /test/dir1; \
pwd; \
pushd dir2; \
pwd; \
popd; \
pwd; \
"
RUN pwd
Sending build context to Docker daemon 77.25MB
Step 1/4 : FROM debian
---> 2d337f242f07
Step 2/4 : RUN mkdir -p /test/dir1/dir2
---> Using cache
---> d609d5e33b08
Step 3/4 : RUN bash -xc "pushd /test/dir1; pwd; pushd dir2; pwd; popd; pwd; "
---> Running in 79aa21ebdd15
+ pushd /test/dir1
+ pwd
+ pushd dir2
+ pwd
+ popd
+ pwd
/test/dir1 /
/test/dir1
/test/dir1/dir2 /test/dir1 /
/test/dir1/dir2
/test/dir1 /
/test/dir1
Removing intermediate container 79aa21ebdd15
---> fb1a07d6e342
Step 4/4 : RUN pwd
---> Running in 9dcb064b36bb
/
Removing intermediate container 9dcb064b36bb
---> eb43f6ed241a
Successfully built eb43f6ed241a
Successfully tagged test:latest
有什么方法可以在 Dockerfile 中使用 pushd/popd 命令吗?如果可能的话,它会让一些安装脚本变得容易得多。
可以做到,但你的图像必须有 bash 并且所有命令必须在同一个 RUN
指令中:
Dockerfile
FROM debian
RUN mkdir -p /test/dir1/dir2
RUN bash -xc "\
pushd /test/dir1; \
pwd; \
pushd dir2; \
pwd; \
popd; \
pwd; \
"
RUN pwd
Sending build context to Docker daemon 77.25MB Step 1/4 : FROM debian ---> 2d337f242f07 Step 2/4 : RUN mkdir -p /test/dir1/dir2 ---> Using cache ---> d609d5e33b08 Step 3/4 : RUN bash -xc "pushd /test/dir1; pwd; pushd dir2; pwd; popd; pwd; " ---> Running in 79aa21ebdd15 + pushd /test/dir1 + pwd + pushd dir2 + pwd + popd + pwd /test/dir1 / /test/dir1 /test/dir1/dir2 /test/dir1 / /test/dir1/dir2 /test/dir1 / /test/dir1 Removing intermediate container 79aa21ebdd15 ---> fb1a07d6e342 Step 4/4 : RUN pwd ---> Running in 9dcb064b36bb / Removing intermediate container 9dcb064b36bb ---> eb43f6ed241a Successfully built eb43f6ed241a Successfully tagged test:latest