使用像这样的Dockerfile时:
FROM swift:latest
RUN mkdir foo && cd foo && swift package init
RUN cd foo && swift build && swift build
RUN cd foo && swift build
Run Code Online (Sandbox Code Playgroud)
当第3步运行时,swift build将仅编译应用程序一次,因为第二次执行将只使用已构建的对象,并且输出将是单个Compile Swift Module 'foo' (1 sources)
然而,在运行第4步时,它似乎忽略了已经构建的任何内容,并重新重建整个事物,尽管没有任何改变且没有干净.我已经尝试过运行a RUN ls /foo/.build && ls /tmp,一切似乎都已到位.
我想要实现的是设置我的图像,所以我首先从git克隆项目,构建它(所以这个"基础"层由docker缓存),然后COPY在本地机器的任何更改中构建只是新的更新,但最终建立整个项目2次.
任何的想法?
编辑:这是我的实际Dockerfile的样子:
FROM swift:latest
RUN git clone git@foo.com/foo.git
RUN cd /foo && swift build
COPY . /foo
RUN cd /foo && swift build
Run Code Online (Sandbox Code Playgroud)
理想情况下,前三层将保持缓存,最后两层只会构建新的更改,而不是最终重建整个项目
| 归档时间: |
|
| 查看次数: |
211 次 |
| 最近记录: |