【Gitlab CI/CD】如何製作docker image,並上傳至gitlab container registry,以供Laravel 跑CI 時使用?

其他詳情請參考gitlab官方文件

https://docs.gitlab.com/ee/ci/examples/laravel_with_gitlab_and_envoy/

零、前情提要

在用 gitlab runner 跑CI流程時,專案裡的gitlab-ci.yml,其image的這個欄位,需要指定一個docker image ,當作pipe line的環境使用。

因此我們需要自己撰寫一個docker file,去包成一個docker image,
之後上傳到gilab registry。

上傳成功之後,只要在該 gitlab-ci.yml 寫上gilab registry的指定位置即可。

一、撰寫 Docker Fille

文件請參考
https://docs.gitlab.com/ee/ci/examples/laravel_with_gitlab_and_envoy/#create-a-container-image

~ base image的部分

FROM php:8.1

~ 更新套件

RUN apt-get update

~ 安裝其他composer依賴項

RUN apt-get install -qq git curl libmcrypt-dev libjpeg-dev libpng-dev libfreetype6-dev libbz2-dev libzip-dev #

~ 清除不再需要的軟件包

RUN apt-get clean

~ 安裝php所需的拓展

RUN docker-php-ext-install gd pdo_mysql zip

~ 安裝composer

RUN curl --silent --show-error "https://getcomposer.org/installer" | php -- --install-dir=/usr/local/bin --filename=composer

~ 安裝envoy 撰寫佈署腳本用

RUN composer global require 'laravel/envoy=~1.0'

二、製作image並上傳

將上述文件包成一個名為Dockerfile的檔案,並在該目錄開啟終端機

~ 登入

docker login registry.gitlab.com

~ USERNAME為你在gilab上註冊的帳號名(不是暱稱),必須要一樣才會上傳成功,最後點"."的符號,代表當前目錄

~ laravel-sample 必須是在gitlab上現有的專案名稱,因為container registry是跟著專案跑的

docker build -t registry.gitlab.com/"USERNAME"/laravel-sample .

~ 上傳

docker push registry.gitlab.com/"USERNAME"/laravel-sample

三、檢查結果

1.可用docker images 檢查清單