4
我以为我已经理解了Docker,但是今天我发现了一些关于使用docker缓存的问题。Dockerfile没有在RUN作曲者安装命令中使用缓存
这里是我的dockerfile
FROM quay.io/my_company/phpjenkins
WORKDIR /usr/src/my_project
ADD composer.json composer.json
ADD composer.lock composer.lock
RUN composer install -o
ADD . .
RUN mkdir -p temp/unittest/cache log
RUN cp app/config/config.unittest.template.neon app/config/config.unittest.neon
CMD ["tail", "-f", "/dev/null"]
我希望泊坞窗使用高速缓存,直到ADD . .
然而,每一个构建,看起来像搬运工想尽一切时间做composer install
。
下面是一些输出
+ docker-compose -f docker-compose.yml run app vendor/bin/phpunit -d memory_limit=2048M
Creating network "xxx_default" with the default driver
Creating xxx_rabbitmq_1
Creating xxx_mysql_1
Building app
Step 1/9 : FROM quay.io/my_company/phpjenkins
---> f10ea65fb7df
Step 2/9 : WORKDIR /usr/src/my_project
---> Using cache
---> 07ad76770cd2
Step 3/9 : ADD composer.json composer.json
---> Using cache
---> 0d22314b81af
Step 4/9 : ADD composer.lock composer.lock
---> Using cache
---> 3d41825efcb3
Step 5/9 : RUN composer install -o
---> Running in 38de5f08eb46
Warning: This development build of composer is over 60 days old. It is recommended to update it by running "/usr/local/bin/composer self-update" to get the latest version.
Do not run Composer as root/super user! See https://getcomposer.org/root for details ....
...
---> aa05dc9ddc5f
Removing intermediate container 581aa7e4b00f
Step 6/9 : ADD . .
---> 8796a9235b9a
Removing intermediate container b7354231fbd7
我跑出来的铅,这可能是可能的事情,dockerfile没有,如果使用缓存RUN composer install
命令
我在Debian使用Docker version 17.05.0-ce, build 89658be
帮助调查。
请指教。
拿起你的输出是从最初的'泊坞窗,compose'。你有没有输出连续尝试在第5步没有使用缓存? –
嗨@MattSchuchard,我不确定哪里可以得到你的信息。但在步骤5)中,它不显示“使用缓存”,这是不是意味着它根本没有尝试? – chaintng
如果命令字符串“composer install -o”发生更改,则运行命令缓存应该失效,因此不应该发生这种情况:https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices /#build-cache 如果您尝试任何其他命令,仅用于测试目的,它是否与缓存匹配? –