前言
昨天我們大致上描述了實戰中的思路方向,今天我們主要解決在自己的環境中,編譯好源代碼,變且包裝成
Container``的過程與方法!
Pipeline
透過前面提到的機制部署到測試環境中master
執行。master
會執行產出 Image
,並且依照 Git Sha
標記上 Tag
。Image Registry
Docker Image
我們使用了 Gitlab CI
來完成建置 Image
的過程!範例如下!
stages:
- build
- master
variables:
LANG: "en_US.UTF-8"
LC_ALL: "en_US.UTF-8"
GIT_SUBMODULE_STRATEGY: normal
# Use TLS https://docs.gitlab.com/ee/ci/docker/using_docker_build.html#tls-enabled
DOCKER_HOST: tcp://docker:2376
DOCKER_TLS_CERTDIR: "/certs"
build:
stage: build
image: yasuoyuhao/php-fpm-composer
before_script:
- composer config -g cache-dir "$(pwd)/.composer-cache"
script:
- sh ./shell-script/composer.sh
cache:
paths:
- .composer-cache/
artifacts:
expire_in: 30 min
paths:
- vendor/
only:
- branches
- /^release*/
- release
except:
- tags
allow_failure: false
master:
image: docker:19.03.8
services:
- docker:19.03.8-dind
tags:
- docker
stage: master
before_script:
- docker info
- apk update
- apk upgrade
- apk add build-base libffi-dev openssl-dev libgcc
- apk add python3
- apk add python3-dev
- apk add py3-pip
- pip3 install docker-compose
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
script:
- sh ./package.sh
- sh ./shell-script/build-image.sh
only:
- /^release*/
- release
- master
except:
- tags
這邊主要是使用了 Gitlab CI
,並且安裝 Docker Compose
其中利用了docker-compose -f docker-compose-prod.yml build --no-cache
來建立 Docker image
,節省了很多建置的指令。
最後再把建立好的 Image
分別 Tag
後 Push 到自己的私有Image Registry
到此為止,我們就完成了打包與交付系統的前置作業,明天來分享如何一鍵部署到客戶私有雲上!