0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

DockerでGitBucketを簡単に構築してみる。

Posted at

 転職に際し、自分の進めていた+管理していた業務自動化スクリプトを引き継ぎしようと思ったが、引き継ぎ先メンバーがGitを使用できないことが分かったので、練習してもらう環境を整えるためにDockerでGitBucketサーバーを簡単に構築してみる。
今回はゲストOSのRocky LinuxにDockerをインストールして、GitBucketサーバーを構築します。
(最近Dockerを触っていないので、ほぼ自分の勉強が目当て)

環境


ホストOS: Windows11
ゲストOS:Rocky8(Hyper-V)

for_gitbucket.png

構築手順


  1. Dockerインストール
  2. dockerfileの作成
  3. docker-compose.ymlの作成
  4. ホスト側でのポートフォワーディング設定(おまけ)

1. Dockerのインストール

まずゲストOSにDockerをインストールする必要がある。
デフォルトのレポジトリからdnf install dockerで適用にインストできると思ってたが、podmanというコンテナ技術を使ってDockerのCLIをエミュレートしているものしかインストできなさそうだった

pcp-pmda-docker.x86_64 : Performance Co-Pilot (PCP) metrics from the Docker daemon
podman-docker.noarch : Emulate Docker CLI using podman

これでもいいやと思って使ってたらdocker-composeでエラーをはいて詰まってしまったので、Dockerの公式リポジトリからDockerをインストールする。

#リポジトリの追加
[root@localhost ~]#  dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

#インスト可能なパッケージが増えていることを確認
[root@localhost ~]# dnf search docker
Docker CE Stable - x86_64                                                                    441 kB/s |  66 kB     00:00    
================================================= 名前 & 概要 一致: docker ==================================================
docker-buildx-plugin.x86_64 : Docker Buildx plugin for the Docker CLI
docker-ce-rootless-extras.x86_64 : Rootless support for Docker
docker-compose-plugin.x86_64 : Docker Compose (V2) plugin for the Docker CLI
docker-scan-plugin.x86_64 : Docker Scan plugin for the Docker CLI
pcp-pmda-docker.x86_64 : Performance Co-Pilot (PCP) metrics from the Docker daemon
podman-docker.noarch : Emulate Docker CLI using podman
===================================================== 名前 一致: docker =====================================================
docker-ce.x86_64 : The open-source application container engine
docker-ce-cli.x86_64 : The open-source application container engine

#dockerのインスト
[root@localhost ~]# sudo dnf install docker-ce docker-ce-cli containerd.io docker-compose-plugin

2. dockerfileの作成

基本GitBucketのコンテナイメージをそのままrunするだけでいいのだが、勉強+拡張性のためにdockerfileを使う。
下記のファイルを適時コメントアウトを無効化して使用すればOK。

#コンテナのイメージ指定
FROM gitbucket/gitbucket:latest

#コンテナの公開ポート指定
EXPOSE 8080

#何かコピーしたいものがあれば
#COPY /host/target/path /container/target/path

#コンテナイメージのビルド時に設定する環境変数(コンテナのOSには引き継がれない)
#ARG APP_ENV=production

#コンテナ起動時に設定する環境変数
#ENV APP_ENV=production

#Dockerイメージを作成する際に実行するコマンド
#RUN apt install hogehoge 

#Dockerコンテナを起動した際に実行するコマンド(上書き可)
#CMD python /app/app.py

#Dockerコンテナを起動した際に実行する必須で実行するコマンド(上書き不可)
#ENTRYPOINT python /app/app.py

3. docker-compose.ymlの作成

同じく勉強+拡張性のためにdocker-composeを使用する。
通常gitbucketイメージだけのコンテナで十分だが、場合によってはDBサーバを別で構築したい場合もあると思うので、例としてDBコンテナの記述も下記に追加した。(GitBucket側でのDBサーバ指定の設定は割愛)

version: '3'
services:
  gitbucket:
    build: .
    #ローカルとコンテナでファイルを同期する場合(ホストボリューム/バインドマウント)
    #volumes:                                                        
      #- ./src:/app
    ports: 
      - "80:8080"
    restart: always
    depends_on: 
      - db

#DBを別で用意する場合は、下記のサービスも追加する
  db: 
    image: postgres:latest
    restart: always
    environment: 
      - POSTGRES_DB=gitbucket
      - POSTGRES_USER=gitbucket
      - POSTGRES_PASSWORD=gitbucket

Dockerfileとdocker-compose.ymlが準備できたので、下記コマンドを実行してみる。
(カレントディレクトリにDockerfileとdocker-compose.ymlを配置してる)

[root@localhost ~]# docker compose up -d gitbucket
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE             COMMAND                   CREATED         STATUS              PORTS                                              NAMES
427f094ed8f0   root-gitbucket    "sh -c 'java -jar /o…"   9 minutes ago   Up About a minute   29418/tcp, 0.0.0.0:80->8080/tcp, :::80->8080/tcp   root-gitbucket-1
83dfad8df75d   postgres:latest   "docker-entrypoint.s…"   9 minutes ago   Up 9 minutes        5432/tcp                                           root-db-1

gitbucketコンテナとDBコンテナが立ち上がっていることが確認できた。
ゲストOSあてにhttpでアクセスしてみる。
image.png
無事GitBucketにアクセスできることを確認。

4. ホスト側でのポートフォワーディング設定(おまけ)

ホストOSのHyper-Vで内部ネットワークを使用し、ホストOS側でNAT変換することで、ゲストOSが外部ネットワークと通信できるようにしている。そのため、基本的に外部からゲストOSに通信することができなくなっているので、この構成ではポートフォワーディング設定が必要になる。

netsh interface portproxy add v4tov4 listenaddress=ホストOSのIP listenport=80 connectaddress=ゲストOSのIP connectport=80

外部のクライアントからホストOSの80番ポート宛に通信が来ると、ゲストOSの80番ポートに転送されるようになる。
ゲストOSの80番ポートはDockerで作成したGitBucketコンテナの8080番ポート宛に転送されるため、外部からでもGitBucketを使えるようになる。

終わり

普段使わないと細かいDockerfileやdocker-composeの項目を忘れてしまいますね。
これで簡易的ではありますがリモートリポジトリを使っていただく環境が作れたかなーと思います。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?