[英]Cache dependency in gitlab-ci / docker
我不知道如何在gitlab-ci-> docker中進行緩存依賴。 我的項目有82個依賴項,而且它們變得非常慢..(供應商位於gitignore中)
全過程:
更改本地文件->提交並推送到遠程倉庫->運行gitlab-ci- >構建docker映像->將映像推送到其他服務器->發布映像
我的示例項目:
應用->我的文件(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慈:
build:
script:
- make build
only:
- master
Makefile文件:
all: build
build:
docker build hub.myserver.test/new_image .
如何緩存依賴項(composer.json)? 我不想從頭開始下載庫。
通常,在映像中運行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" ]
另一個很好的考慮是,您可以在使用它構建映像之前測試代碼。 只需在compose
和build
之間添加test
作業。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.