Git管理はGitHubを使っている事が多いですが、ソースコードを外部サービスに置きたくない場合にローカルサーバーにGitサーバーを構築することがあります。
Gitサーバーを構築する方法はいくつかありますが、今回はGitBucketをDockerで動かす方法を紹介します。
GitBucketは、Javaで書かれたGitHubのような機能を持つGitリポジトリ管理ツールです。
日本人の方が開発しておりますので、ドキュメントも日本語で書かれています。
Dockerイメージがありますが、M2チップでは動作しないためDockerfileを作成してビルドする必要があります。
0. 環境
- MacBook Mini M4
- MacOS Ventura 13.6
- Docker Desktop 4.24.0
- Docker Compose 2.20.2
- GitBucket 4.23.1
- PostgreSQL 15.4
1. dockerfileとwait-for-it.shの準備
GitBucketのDockerfileを作成するために、以下のファイルを準備します。
- .docker/gitbucket/Dockerfile
- gitbucket/wait-for-it.sh
「gitbucket/wait-for-it.sh」は、GitBucketがPostgreSQLに接続するまで待機するためのスクリプトです。
Docker自体は準備したものとして以下のDockerfileを作成します。
FROM arm32v7/openjdk:10-jre
# バージョンは公式で確認してください
ADD https://github.com/gitbucket/gitbucket/releases/download/4.23.1/gitbucket.war /opt/gitbucket.war
RUN ln -s /gitbucket /root/.gitbucket
VOLUME /gitbucket
# Port for web page
EXPOSE 8080
# Port for SSH access to git repogitory (Optional)
EXPOSE 29418
CMD [ "java", "-jar", "/opt/gitbucket.war"]
wait-for-it.shの準備
GitBucketがPostgreSQLに接続するまで待機するためのスクリプト「wait-for-it.sh」を以下のURLからダウンロードします。
curl -o gitbucket/wait-for-it.sh https://raw.githubusercontent.com/vishnubob/wait-for-it/master/wait-for-it.sh
権限を変更します。
chmod 755 gitbucket/wait-for-it.sh
2. docker-compose.ymlの作成
docker-compose.ymlを作成します。
services:
# GitBucket
gitbucket:
build:
context: .
dockerfile: ./.docker/gitbucket/Dockerfile
container_name: gitbucket
hostname: gitbucket
restart: always
expose:
- 8080
- 8443
ports:
- 8080:8080
- 29418:29418
volumes:
- ./gitbucket:/gitbucket
depends_on:
- gitbucket-db
environment:
- GITBUCKET_DB_URL=jdbc:postgresql://gitbucket-db/gitbucket
- GITBUCKET_DB_USER=postgres
- GITBUCKET_DB_PASSWORD=password
command: ["/gitbucket/wait-for-it.sh", "postgresql:5432", "--", "java", "-jar", "/opt/gitbucket.war"]
networks:
- app-net
- default
# Postgresql for gitbucket
gitbucket-db:
image: postgres:12
container_name: gitbucket-db
hostname: gitbucket-db
ports:
- 54321:5432
restart: always
environment:
- POSTGRES_DB=gitbucket
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=password
- POSTGRES_INITDB_ARGS=--encoding=UTF-8
- PGTZ=Asia/Tokyo
volumes:
- ./gitbucket-db/init:/docker-entrypoint-initdb.d
- ./gitbucket-db/data:/var/lib/postgresql/data/
networks:
- app-net
- default
# 共有ネットワーク
networks:
app-net:
external: true
3. docker-composeの起動
docker-composeを起動します。
docker-compose up -d
起動後、以下のURLにアクセスしてGitBucketの画面が表示されれば成功です。
http://localhost:8080
GitBucketの初期ユーザーは以下の通りです。
- ユーザー名: root
- パスワード: root
セキュリティのために、初回ログイン後にパスワードを変更してください。