GitBucket

MacにDocker + GitBucketをセットアップする

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

セキュリティのために、初回ログイン後にパスワードを変更してください。