はじめに
オンプレミスで構築したGitlab環境からCI/CDを動かして、Ansibleを自動化してみたくなったので、gitlab-runnerを導入してみました。
本記事では、gitlab-runner実行環境の構築~GitlabのCI/CD設定までの手順をご紹介します。
※gitlab-runnerとは、Gitlab上でコードを実行する際に使用する実行環境です。
詳しくはGitLab Runnerで始める継続的インテグレーション等の記事をご確認ください。
1. 環境イメージ
構築する環境のイメージは以下の通りです
- Gitlabにコードをpushする
- Gitlabでmaster(main)ブランチにコードをマージする
- Gitlabがgitlab-runnerに指示
- gitlab-runnerがansibleコードを実行し、リモートサーバに対して設定を行う
2. 開発環境
VirtualBoxを使用した仮想環境で構築しております
※パッケージについては、主要なもののみ記載し、依存パッケージについては省略しています
- ホストOS
- Windows 11
- 仮想化ソフトウェア
- VirtualBox(7.0.8 r156879)
- ゲストOS
- Ubuntu 24.04 #Gitlab
- Gitlab 17.4
- Ubuntu 24.04 #Docker
- docker 27.1.2
- Ubuntu 24.04 #Docker container
- gitlab-runner 17.3.0
- ansible-core 2.17.3
- Ubuntu 24.04 #Docker container
- docker 27.1.2
- Ubuntu 24.04 #Gitlab
3. Dockerサーバ構築
gitlab-runnerはdockerコンテナで構築する方法を採用したため、まずはdockerサーバを構築します
OSはUbuntuを採用しました
※gitlab-runnerの公式リポジトリで公開されているDockerfileがUbuntu、almalinux、ubi-fipsの三つだったため、Gitlabサーバと同じOSのUbuntuを使用しました
なお、Gitlabサーバと同じOSを使用しなければならないという制約は記載がなかったので、お好みのOSで構築しても問題ないものと思います
3-1. Ubuntuサーバ構築
【Ubuntu】ubuntu24.04をインストールしてみたの記事を参考にUbuntuサーバを構築します
ただし、Dockerはディスクをかなり消費するため、ストレージサイズはデフォルト(25GB)より大きくした方が良いです(筆者の環境では25GBだと容量不足になったので、50GBくらいあっても良かったかなという感じでした)
3-2. dockerインストール
3-2-1. インストール要件確認
※今回は新規構築のため、前提条件部分は対応不要でしたので、本記事では割愛します
3-2-2. dockerリポジトリ設定
aptを使ってインストールしていきます
①パッケージリスト更新
# apt-get update
②必要パッケージインストール
# apt-get install -y ca-certificates curl
③GPGキー格納先ディレクトリ作成
# install -m 0755 -d /etc/apt/keyrings
④GPGキーダウンロード
# curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
⑤GPGキー権限変更
# chmod a+r /etc/apt/keyrings/docker.asc
⑥リポジトリ情報登録
# echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
tee /etc/apt/sources.list.d/docker.list > /dev/null
⑦パッケージリスト更新
# apt-get update
3-2-3. dockerインストール
①dockerインストール
※今回は最新版をインストールしています
特定のバージョンをインストールしたい場合は、バージョンを指定して実行してください
# apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
②dockerインストール確認
【コマンド】
# docker --version
【結果】※2024/8/19時点で最新の27.1.2がインストールされています
Docker version 27.1.2, build d01f264
③docker動作確認
実際にイメージをダウンロードして起動してみます
【コマンド】
# docker run hello-world
【結果】
下記のような結果が表示されていれば問題ありません
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
c1ec31eb5944: Pull complete
Digest: sha256:53cc4d415d839c98be39331c948609b659ed725170ad2ca8eb36951288f81b75
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
4. gitlab-runner導入
gitlab-runnerの導入は、先ほどのhello-worldのようにリモートリポジトリからイメージを引っ張ってきて、dockerコンテナ上でセットアップする方法と、Dockerfileを使ってローカルイメージを作成して起動するパターンがあります
ただ、前者の場合はdockerを使用するメリットが無くなるため、後者の方法を取ります
4-1. Dockerfile作成
dockerhubとGitlabに公式のリポジトリがあったので、こちらを参考に作成します
dockerhubの方は内容が古いようで、GPGキーの設定で失敗してしまったので、後者のGitlabの方法を採用することにしました
- Dockerfile
- イメージのバージョン設定の部分はARG指定した際に下記エラーが発生したため、カスタマイズしました
WARN: InvalidDefaultArgInFrom: Default value for ARG $BASE_IMAGE results in empty or invalid base image name
参考:https://docs.docker.com/reference/build-checks/invalid-default-arg-in-from/ - ansibleではsudoが必要になるため、パッケージとして必要になるものは追加しています
- dockerのベストプラクティスに合わせて、インストールするパッケージはアルファベット順に変更しています
- Ansibleのインストールを追加で設定しています(apt-getを使ったインストールでも問題ありませんが、Ansibleのベストプラクティスに合わせてpipxを使用する方法を取りました)
- Ansibleは最新版ansible-coreをインストールしています。(https://github.com/ansible/ansible)
- Ansibleコマンドのパス設定で、当初は
pipx ensurepath
を使用していましたが、パス設定が保存されなかったため、.bash_profileに書き込む方法を採用しました(※.bashrcだとCI/CDでは読み込まれないので注意)
- イメージのバージョン設定の部分はARG指定した際に下記エラーが発生したため、カスタマイズしました
ARG BASE_IMAGE_VERSION
FROM ubuntu:${BASE_IMAGE_VERSION:-24.04}
ARG TARGETPLATFORM
ARG TARGETARCH
ARG ARCH=${TARGETARCH}
ENV DEBIAN_FRONTEND=noninteractive
# hadolint ignore=DL3008
RUN apt-get update -y && \
apt-get install -y --no-install-recommends \
apt-transport-https \
ca-certificates \
curl \
git git-lfs \
openssh-client \
sudo \
tzdata \
vim \
wget \
&& rm -rf /var/lib/apt/lists/*
COPY gitlab-runner /etc/sudoers.d/
ARG DOCKER_MACHINE_VERSION
ARG DUMB_INIT_VERSION
COPY gitlab-runner_*.deb checksums-* install-deps install-gitlab-runner /tmp/
RUN /tmp/install-deps "${TARGETPLATFORM}" "${DOCKER_MACHINE_VERSION}" "${DUMB_INIT_VERSION}"
RUN rm -rf /tmp/* /etc/gitlab-runner/.runner_system_id
ARG ANSIBLE_VERSION
RUN apt-get update -y && \
apt-get install -y pipx && \
pipx ensurepath && \
rm -rf /var/lib/apt/lists/*
USER gitlab-runner
RUN pipx install ansible-core=="${ANSIBLE_VERSION:-2.17.3}"
RUN echo "export PATH=\"$PATH:/home/gitlab-runner/.local/bin\"" >> ~/.bash_profile && \
. ~/.bash_profile
FROM ubuntu:${BASE_IMAGE_VERSION:-24.04}
COPY --from=0 / /
COPY --chmod=755 entrypoint /
STOPSIGNAL SIGQUIT
VOLUME ["/etc/gitlab-runner", "/home/gitlab-runner"]
ENTRYPOINT ["/usr/bin/dumb-init", "/entrypoint"]
CMD ["run", "--user=gitlab-runner", "--working-directory=/home/gitlab-runner"]
- gitlab-runner
/etc/sudoers.d/配下に格納するファイルです
sudo使用時にパスワードを求められないように設定しています
こちらはカスタマイズで設定を追加しています
gitlab-runner ALL=(ALL:ALL) NOPASSWD: ALL
- install-deps
RUN /tmp/install-deps "${TARGETPLATFORM}" "${DOCKER_MACHINE_VERSION}" "${DUMB_INIT_VERSION}"
で実行しているスクリプトです
dump-initのインストールに必要なプラットフォーム情報の設定、install-gitlab-runner
スクリプトの実行(gitlab-runnerのインストール)、ディレクトリ作成等、gitlab-runnerをセットアップするスクリプトです
こちらはカスタマイズしていません
#!/usr/bin/env bash
set -eEo pipefail
SCRIPTPATH="$( cd "$(dirname "$0")" ; pwd -P )"
TARGETPLATFORM="$1"
DOCKER_MACHINE_VERSION="$2"
DUMB_INIT_VERSION="$3"
case "${TARGETPLATFORM}" in
"linux/arm64")
ARCH=arm64
DOCKER_MACHINE_ARCH=aarch64
DUMB_INIT_ARCH=aarch64
;;
"linux/amd64" | "")
ARCH=amd64
DOCKER_MACHINE_ARCH=x86_64
DUMB_INIT_ARCH=x86_64
;;
"linux/s390x")
ARCH=s390x
DOCKER_MACHINE_ARCH=s390x
DUMB_INIT_ARCH=s390x
;;
"linux/ppc64le")
ARCH=ppc64le
DOCKER_MACHINE_ARCH=ppc64le
DUMB_INIT_ARCH=ppc64le
;;
*)
echo "Unexpected TARGETPLATFORM value: ${TARGETPLATFORM}"
;;
esac;
"${SCRIPTPATH}/install-gitlab-runner" "${ARCH}"
rm "${SCRIPTPATH}/install-gitlab-runner"
gitlab-runner --version
mkdir -p /etc/gitlab-runner/certs
chmod -R 700 /etc/gitlab-runner
if grep 'docker-machine' "${SCRIPTPATH}/checksums-${ARCH}"; then
curl -L "https://gitlab.com/gitlab-org/ci-cd/docker-machine/-/releases/${DOCKER_MACHINE_VERSION}/downloads/docker-machine-Linux-${DOCKER_MACHINE_ARCH}" \
-o /usr/bin/docker-machine
else
echo "No checksum specified for docker-machine, skipping."
fi
curl -L "https://github.com/Yelp/dumb-init/releases/download/v${DUMB_INIT_VERSION}/dumb-init_${DUMB_INIT_VERSION}_${DUMB_INIT_ARCH}" \
-o /usr/bin/dumb-init
if [[ -f /usr/bin/docker-machine ]]; then
chmod +x /usr/bin/docker-machine
docker-machine --version
fi
chmod +x /usr/bin/dumb-init
dumb-init --version
- install-gitlab-runner
文字通りgitlab-runnerをインストールしています
dpkgでインストールしているため、依存関係にあるモジュールがインストールされないことから、apt-get -f install
で依存関係にあるモジュールをインストールしています
こちらもカスタマイズしていません
#!/usr/bin/env bash
set -eEo pipefail
ARCH=$(if [ "$1" == "ppc64le" ]; then echo "ppc64el"; else echo "$1"; fi)
dpkg -i "/tmp/gitlab-runner_${ARCH}.deb"
apt-get update
apt-get -f install -y
rm -rf /var/lib/apt/lists/*
rm "/tmp/gitlab-runner_${ARCH}.deb"
- checksums-${ARCH}
docker-machineをインストールする場合、必要になるファイルですが、今回は不要なので作成していません
- entrypoint
カスタムCA証明書がある場合、更新を行った上でgilab-runnerを起動するスクリプトです
こちらもカスタマイズしていません
#!/bin/bash
# gitlab-runner data directory
DATA_DIR="/etc/gitlab-runner"
CONFIG_FILE=${CONFIG_FILE:-$DATA_DIR/config.toml}
# custom certificate authority path
CA_CERTIFICATES_PATH=${CA_CERTIFICATES_PATH:-$DATA_DIR/certs/ca.crt}
LOCAL_CA_PATH="/usr/local/share/ca-certificates/ca.crt"
update_ca() {
echo "Updating CA certificates..."
cp "${CA_CERTIFICATES_PATH}" "${LOCAL_CA_PATH}"
update-ca-certificates --fresh >/dev/null
}
if [ -f "${CA_CERTIFICATES_PATH}" ]; then
# update the ca if the custom ca is different than the current
cmp --silent "${CA_CERTIFICATES_PATH}" "${LOCAL_CA_PATH}" || update_ca
fi
# launch gitlab-runner passing all arguments
exec gitlab-runner "$@"
4-2. ファイル配置
①ホームディレクトリ(home/ユーザー名/)にDockerfileを格納するディレクトリを作成して、そのディレクトリに移動します
※格納先は特に決まりはありませんが、Dockerfile一式があるパスでdocker buildを実行するので、ユーザー管理のディレクトリで良いと思います
②4-1で作成したファイルを格納します
③gitlab-runnerのdepファイルをダウンロードします
# curl -LJO "https://gitlab-runner-downloads.s3.amazonaws.com/latest/deb/gitlab-runner_amd64.deb"
参考:GNU/LinuxにGitLab Runnerを手動インストールします- deb/rpm パッケージの使用
④install-deps
とinstall-gitlab-runner
のパーミッションを変更します
実行権限が付与されていない場合、docker build
が失敗します
※どうやらホスト側のファイルのパーミッションが継承されるようです
※もし、docker-machineをインストールする場合は、checksums-*
ファイルが必要です
.
┣ Dockerfile
┣ entrypoint
┣ gitlab-runner
┣ gitlab-runner_amd64.deb
┣ install-deps
┗ install-gitlab-runner
4-3. dockerイメージ作成
docker imageの作成の詳細は下記を参考にしています
- dockerイメージ作成
- --build-argオプション
4-3-1. dockerイメージ作成
Dockerfileで変数として指定している部分は指定してあげます
- TARGETPLATFORM:linux/amd64
- TARGETARCH:x86_64
- BASE_IMAGE_VERSION:任意のバージョン
- ANSIBLE_VERSION:任意のバージョン
- DOCKER_MACHINE_VERSION:任意のバージョン
- DUMB_INIT_VERSION:任意のバージョン
【コマンド例】
※BASE_IMAGE_VERSIONおよびANSIBLE_VERSIONは指定しなかった場合、デフォルト値が適用されるため省いています
※DOCKER_MACHINE_VERSIONは今回導入しないため省いています
※DUMB_INIT_VERSIONは最新版です。(https://github.com/Yelp/dumb-init/releases)
# docker build -t local-gitlab-runner-1:latest -f Dockerfile --build-arg TARGETPLATFORM=linux/amd64 --build-arg TARGETARCH=x86_64 --build-arg DUMB_INIT_VERSION=1.2.5 .
4-3-2. dockerイメージ確認
【コマンド】
# docker images
【結果】
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
local-gitlab-runner latest 975f02dbf2fd 23 hours ago 995MB
hello-world latest d2c94e258dcb 15 months ago 13.3kB
4-4. dockerコンテナ作成
公式サイト「オプション2: Dockerボリュームを使用してランナーコンテナを起動する」のコマンドを参考に実行していきます
4-4-1.dockerボリューム作成
【コマンド】
# docker volume create gitlab-runner-config
【結果】
# docker volume create gitlab-runner-config
gitlab-runner-config
4-4-2. dockerボリューム確認
【コマンド】
# docker volume ls
【結果】
※ボリューム作成しないと上段のような名称となり、管理しにくくなります
# docker volume ls
DRIVER VOLUME NAME
local 707b546ec7b712803216f75b0aac09ce51622e192857f6bd79d1431f7eea6db5
local gitlab-runner-config
4-4-3. dockerコンテナ作成
【コマンド】
- name:コンテナ名
- restart always:コンテナが停止したら再起動する(手動で停止した場合は停止状態)
- env:コンテナに設定する環境変数
- v:マウント設定(ホストで持っているgitlab-runner-configをコンテナ上の/etc/gitlab-runnerにマウントする)
- 最終行:使用するイメージ名
# docker run -d --name local-gitlab-runner --restart always --env TZ=Asia/Tokyo \
-v /var/run/docker.sock:/var/run/docker.sock \
-v gitlab-runner-config:/etc/gitlab-runner \
local-gitlab-runner:latest
【結果】
# docker run -d --name local-gitlab-runner --restart always --env TZ=Asia/Tokyo \
-v /var/run/docker.sock:/var/run/docker.sock \
-v gitlab-runner-config:/etc/gitlab-runner \
local-gitlab-runner:latest
a41d636418b209bcf41f16f77e9f6ec46819322d378d710bc6fcad68a3aa98fc
4-4-4. dockerコンテナ確認
【コマンド】
# docker ps
【結果】
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a41d636418b2 local-gitlab-runner:latest "/usr/bin/dumb-init …" 20 hours ago Up 20 hours local-gitlab-runner
4-5. dockerコンテナ接続
作成したコンテナに接続してみます
4-5-1. dockerコンテナ接続
【コマンド】
# docker exec -it local-gitlab-runner bash
ざっくりキーボード入力と画面表示ができるみたいな感じですね
- i:アタッチしていなくても、標準入力を開き続ける※
- t:疑似(pseudo) TTY を割り当て※
- bash:bashシェル実行
※引用:https://docs.docker.jp/engine/reference/commandline/exec.html
【結果】rootでコンテナに接続したことがわかります(@以降はコンテナIDです)
# docker exec -it local-gitlab-runner bash
root@a41d636418b2:/#
4-5-2. ソフトウェア確認
- gitlab-runner
root@a41d636418b2:/# gitlab-runner --version
Version: 17.3.0
Git revision: 071ba93d
Git branch: 17-3-stable
GO version: go1.22.5
Built: 2024-08-14T23:23:10+0000
OS/Arch: linux/amd64
- ansible
gitlab-runnerユーザにパッケージをインストールしたため、gitlab-runnerで実行できれば期待通りの結果です- root
# root@a41d636418b2:/# ansible --version bash: ansible: command not found
- gitlab-runnerユーザ
gitlab-runner@a41d636418b2:/$ ansible --version ansible [core 2.17.3] config file = None configured module search path = ['/home/gitlab-runner/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /home/gitlab-runner/.local/share/pipx/venvs/ansible-core/lib/python3.12/site-packages/ansible ansible collection location = /home/gitlab-runner/.ansible/collections:/usr/share/ansible/collections executable location = /home/gitlab-runner/.local/bin/ansible python version = 3.12.3 (main, Jul 31 2024, 17:43:48) [GCC 13.2.0] (/home/gitlab-runner/.local/share/pipx/venvs/ansible-core/bin/python) jinja version = 3.1.4 libyaml = True
4-5-3. sudo動作確認
sudoでapt-get updateが実行できており、かつパスワードを求められていません
期待通りの結果です
gitlab-runner@a41d636418b2:/$ sudo apt-get update
Get:1 http://security.ubuntu.com/ubuntu noble-security InRelease [126 kB]
Get:2 http://security.ubuntu.com/ubuntu noble-security/restricted amd64 Packages [354 kB]
Get:3 http://archive.ubuntu.com/ubuntu noble InRelease [256 kB]
Get:4 http://security.ubuntu.com/ubuntu noble-security/multiverse amd64 Packages [12.7 kB]
Get:5 http://security.ubuntu.com/ubuntu noble-security/main amd64 Packages [404 kB]
Get:6 http://archive.ubuntu.com/ubuntu noble-updates InRelease [126 kB]
Get:7 http://archive.ubuntu.com/ubuntu noble-backports InRelease [126 kB]
Get:8 http://security.ubuntu.com/ubuntu noble-security/universe amd64 Packages [337 kB]
Get:9 http://archive.ubuntu.com/ubuntu noble/main amd64 Packages [1808 kB]
Get:10 http://archive.ubuntu.com/ubuntu noble/universe amd64 Packages [19.3 MB]
Get:11 http://archive.ubuntu.com/ubuntu noble/restricted amd64 Packages [117 kB]
Get:12 http://archive.ubuntu.com/ubuntu noble/multiverse amd64 Packages [331 kB]
Get:13 http://archive.ubuntu.com/ubuntu noble-updates/universe amd64 Packages [449 kB]
Get:14 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 Packages [518 kB]
Get:15 http://archive.ubuntu.com/ubuntu noble-updates/multiverse amd64 Packages [16.9 kB]
Get:16 http://archive.ubuntu.com/ubuntu noble-updates/restricted amd64 Packages [354 kB]
Get:17 http://archive.ubuntu.com/ubuntu noble-backports/universe amd64 Packages [11.5 kB]
Fetched 24.7 MB in 8s (3150 kB/s)
Reading package lists... Done
4-6. Gitlab CI/CD登録
gitlab-runnerが準備できましたので、次にGitlabのCI/CDで使用できるようにしていきます
GIltabサーバは「【Gitlab】Gitlabサーバーを構築してみた(インストール~初期設定)」で構築したサーバーを使用します
gitlab-runnerの登録方法はContinuous Integration and Deployment Admin area settingsを参考にしています。
①Adimin Area>Ruunersにて、[New instance runner]を押下します
②New instance runner画面にて、設定を入力して、[create runner]を押下します
③runnerの設定画面にて、Operating systemを選択し、Step1の内容を確認します
※ここに記載されているコマンドを用いて、gitlab-runnerの認証を行っていきます
④gitlab-runnerのdockerコンテナ上で、コマンドを実行します
【コマンド】
# gitlab-runner register --url http://[設定したIPアドレス] --token ******************
対話モードになるので、下記のように入力していきます
- [http://xxx.xxx.xxx.xxx]:URLがあっていればEnterキー
- [*******]:runner名を入力してEnterキー
- Enter an executor: ssh, virtualbox, docker, docker-windows, docker+machine, custom, shell, parallels, kubernetes, docker-autoscaler, instance::shellを入力してEnterキー
【結果】
# gitlab-runner register --url http://xxx.xxx.xxx.xxx --token ******************
Runtime platform arch=amd64 os=linux pid=210 revision=071ba93d version=17.3.0
Running in system-mode.
Enter the GitLab instance URL (for example, https://gitlab.com/):
[http://xxx.xxx.xxx.xxx]:
Verifying runner... is valid runner=rWfdzsnjU
Enter a name for the runner. This is stored only in the local config.toml file:
[7e4665737e19]: local-gitlab-runner
Enter an executor: ssh, virtualbox, docker, docker-windows, docker+machine, custom, shell, parallels, kubernetes, docker-autoscaler, instance:
shell
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
Configuration (with the authentication token) was saved in "/etc/gitlab-runner/config.toml"
⑥[View runners]を確認すると、登録したgitlab-runnerの情報が記載されます
5. Gitlab CI/CDを動かす
①Git for Windowsを使って、任意の作業ディレクトリにプロジェクトをクローンします
git clone "プロジェクトのURL"
②クローンされたディレクトリに移動します
③簡易的なコードを作成します
gilab-runnerのユーザーとAnsibleコマンドが打てることを確認する内容です
stages:
- test
test-code-job:
stage: test
script:
- echo "Check user:"
- whoami
- echo "Check the ansible version:"
- ansible --version
※gitlab-ci.ymlの詳細は下記をご確認ください。
④プロジェクトに.gitlab-ci.yml
をpushします
git add .gitlab-ci.yml
git commit -m "コメントを記載"
git push origin main
以上でgitlab-runnerおよびCI/CDの設定完了です!
おわりに
Gitlab CI/CDの構築自体は二度目なのですが、バージョン違いでかなり操作が異なっており、戸惑う点がありました。以前は、Setting>CI/CD画面に認証コマンドが記載されていましたが、Runnersで設定するよう変更されていたんですね。。。参考:Migrating to the new runner registration workflow
また、今回はAnsibleが使えるようにカスタマイズに挑戦してみましたが、Ansibleが動くようになるまでとても時間がかかり苦労しました。
ただ、そのおかげでだいぶDockerfileの書きっぷりや内容を理解できたような気がします。
何度もdocker環境のお掃除もしたので、dockerのディスク管理の仕方も覚えられて勉強になりました。
何度もきれいな環境を作れるので検証しやすいのがdockerのメリットだなと改めて感じました。
Gitlab+dockerあたりは以前使ったことはあるものの、使い方や仕組みを全然理解できていなかったので、今だったらわかることがあるのにな…とか思いをはせたりしています。
AWSとの連携したパイプライン等、もう少し深いところも勉強していきたいです。
参考
-
Docker
Install Docker Engine on Ubuntu
Build context
docker build - Docker-docs-ja 24.0 ドキュメント
オプション2: Dockerボリュームを使用してランナーコンテナを起動する
docker exec - Docker-docs-ja 24.0 ドキュメント
Dockerに占領されたディスク領域を解放する方法 -
Gitlab
dockerfiles/runner/ubuntu
GNU/LinuxにGitLab Runnerを手動インストールします- deb/rpm パッケージの使用
Continuous Integration and Deployment Admin area settings
.gitlab-ci.yml ファイル