我有一个目录结构如下.
- app
Dockerfile
- target
- test_app.tar.gz
Run Code Online (Sandbox Code Playgroud)
tar.gz的提取将具有以下内容,
- lib
- conf
- bin
Run Code Online (Sandbox Code Playgroud)
我想提取并添加lib/*文件夹到docker镜像.
FROM docker.hub.com/alpine/jdk1.8:latest
RUN mkdir -p /service \
/service/app_lib \
/service/lib
COPY target/test_app.tar.gz /service/app_lib/
RUN cd /service/app_lib/
RUN tar -xzf test_app.tar.gz
RUN rm test_app.tar.gz
RUN cd lib
COPY * /service/lib/
RUN rm app_lib
Run Code Online (Sandbox Code Playgroud)
得到以下错误.
Step 5/11 : RUN tar -xzf test_app.tar.gz
---> Running in edde27a1cc60
tar (child): test_app.tar.gz: Cannot open: No such file or directory
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now
Run Code Online (Sandbox Code Playgroud)
不知道这有什么问题.
sta*_*cks 13
该ADD指令将.gz在构建时自动解压缩
ADD target/test_app.tar.gz /service/app_lib
# Clean up
RUN rm -rf /service/app_lib/conf \
/service/app_lib/bin
Run Code Online (Sandbox Code Playgroud)
Pro*_*yag 11
该RUN cd命令的效果仅对该单行有效,在下一行,您又回到了 中/,因此无法找到该文件。使用WORKDIR而不是,RUN cd ...它应该按您的预期工作。或者你可以把整个事情放到一个RUN命令中,比如
RUN cd /service/app_lib/ && tar -xzf test_app.tar.gz && rm test_app.tar.gz
Run Code Online (Sandbox Code Playgroud)
同样的事情适用于下RUN cd lib一部分。
https://docs.docker.com/engine/reference/builder/#workdir
| 归档时间: |
|
| 查看次数: |
9122 次 |
| 最近记录: |