gpt4 book ai didi

Dockerfile 未在 RUN composer install 命令中使用缓存

转载 作者:行者123 更新时间:2023-12-01 06:01:47 25 4
gpt4 key购买 nike

我以为我已经了解 Docker,但是今天我发现了一些关于使用 Docker 缓存的问题。

这是我的 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"]

我希望 docker 使用缓存直到 ADD . .
但是,每次构建,看起来都像 docker 尝试做的 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 使用缓存有什么可能?命令

我正在使用 Docker version 17.05.0-ce, build 89658be在 Debian 上,如果这有助于调查。

请指教。

最佳答案

作为一种变通方法,您可以创建两个 Dockerfile。在您想要缓存的位置创建图像的一种。然后,第二个 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

CMD ["tail", "-f", "/dev/null"]

使用以下命令将此文件构建到 mycomposerimage
docker build -t mycomposerimage .

然后第二个 dockerfile 从那里开始
FROM mycomposerimage
WORKDIR /usr/src/my_project
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"]

关于Dockerfile 未在 RUN composer install 命令中使用缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44657138/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com