簡體   English   中英

gitlab-ci / docker中的緩存依賴

[英]Cache dependency in gitlab-ci / docker

我不知道如何在gitlab-ci-> docker中進行緩存依賴。 我的項目有82個依賴項,而且它們變得非常慢..(供應商位於gitignore中)

全過程:

更改本地文件->提交並推送到遠程倉庫->運行gitlab-ci- >構建docker映像->將映像推送到其他服務器->發布映像

我的示例項目:

  • 應用->我的文件(html,img,php,css等)

  • gitlab-ci.yml

  • composer.json
  • composer.lock
  • Makefile文件
  • Dockerfile

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本身,因此可以避免在生產中使用它。

一種可能的解決方案是將應用程序映像創建分為兩個步驟:

  1. 安裝映像外的所有內容
  2. 將現成的文件復制到圖像

.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" ]

另一個很好的考慮是,您可以在使用它構建映像之前測試代碼。 只需在composebuild之間添加test作業。

實時示例@ gitlab.com

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM