我不知道如何在 gitlab-ci-> docker 中进行缓存依赖。 我的项目有82个依赖项,而且它们变得非常慢..(供应商位于gitignore中)
完整过程:
更改本地文件-> 并推送到远程仓库-> 运行gitlab-ci -> 构建docker映像- > 将图像推送到其他服务器-> 发布图像
我的示例项目:
app->我的文件(html,img,php,css等)
gitlab-ci.yml
Dockerfile:
FROM hub.myserver.test/image:latest
ADD . /var/www
CMD cd /var/www
RUN composer install --no-interaction
RUN echo "#done" >> /etc/sysctl.conf
gitlab-ci:
build:
script:
- make build
only:
- master
制作文件:
all: build
build:
docker build hub.myserver.test/new_image .
如何缓存依赖项(composer.json)?我不想从头开始下载库。
答案 0 :(得分:0)
通常在图像中运行composer install
并不是一个好主意。我认为您最终需要运行自己的php应用程序而不是composer本身,因此可以避免在生产中使用它。
一种可能的解决方案是将应用程序映像创建分为两个步骤:
.gillab-ci.yml
stages:
- compose
- build
compose:
stage: compose
image: composer # or you can use your hub.myserver.test/image:latest
script:
- composer install # install packages
artifacts:
paths:
- vendor/ # save them for next job
build:
stage: build
script:
- docker build -t hub.myserver.test/new_image .
- docker push hub.myserver.test/new_image
因此在Dockerfile中,您只需将文件目录从工件目录从第一阶段复制到映像工作目录:
# you can build from your own image
FROM php
COPY . /var/www
WORKDIR /var/www
# optional, if you want to replace CMD of base image
CMD [ "php", "./index.php" ]
另一个好的考虑因素是,您可以在使用它构建映像之前测试代码。只需在test
和compose
之间添加build
作业即可。