Redmine入門:dockerで作るRedmine環境 -Vol.4-

スポンサーリンク
Redmine入門:dockerで作るRedmine環境 -Vol.4- 環境構築
Redmine入門:dockerで作るRedmine環境 -Vol.4-
この記事は約6分で読めます。
よっしー
よっしー

こんにちは。よっしーです(^^)

今日は、dockerで作るRedmine環境について解説しています。

スポンサーリンク

背景

dockerで作るRedmine環境について調査する機会がありましたので、その時の内容を備忘として記事に残しました。

構成ファイル一覧

下記のファイルを用意します。各ファイルの内容は次のセクションもしくは、次回以降の記事に記載しています。

        new file:   redmine/Dockerfile
        new file:   mysql/Dockerfile
        new file:   compose.yml
        new file:   Makefile

compose.yml


services:

  redmine:
    build: ./redmine
    container_name: redmine
    ports:
      - 8080:3000
    environment:
      TZ: Asia/Tokyo
      REDMINE_DB_MYSQL: redmine_mysql
      REDMINE_DB_DATABASE: redmine
      REDMINE_DB_USERNAME: redmine_admin
      REDMINE_DB_PASSWORD: P@ssw0rd
      REDMINE_DB_ENCODING: utf8mb4
    volumes:
      - ./redmine/src/plugins:/usr/src/redmine/plugins
      - ./redmine/src/themes:/usr/src/redmine/public/themes
    depends_on:
      redmine_mysql:
        condition: service_healthy
    networks:
      - net

  redmine_mysql:
    build: ./mysql
    container_name: redmine-mysql
    environment:
      TZ: Asia/Tokyo
      MYSQL_ROOT_PASSWORD: P@ssw0rd
      MYSQL_DATABASE: redmine
      MYSQL_USER: redmine_admin
      MYSQL_PASSWORD: P@ssw0rd
    healthcheck:
      test: "mysqladmin ping -h 127.0.0.1 -u root -p$$MYSQL_ROOT_PASSWORD"
      timeout: 5s
      interval: 5s
      retries: 10
    networks:
      - net

networks:
  net:

このコードは、Docker Composeを使ってRedmineとMySQLのコンテナを構築するための設定ファイルです。

redmine:

  • Redmineのコンテナを作成します。
  • ビルドコンテキストは ./redmine ディレクトリです。
  • コンテナ名は redmine です。
  • ポート 8080 をホストにバインドし、コンテナ内部の 3000 番ポートにマップします。
  • 環境変数を設定します(タイムゾーン、DB接続情報など)。
  • Redmineのプラグインとテーマのディレクトリをコンテナ内にマウントします。
  • redmine_mysqlコンテナが健全な状態になるまで待機します。
  • netというDockerネットワークに接続します。

redmine_mysql:

  • MySQLのコンテナを作成します。
  • ビルドコンテキストは ./mysql ディレクトリです。
  • コンテナ名は redmine-mysql です。
  • 環境変数を設定します(タイムゾーン、rootパスワード、DB名、ユーザー名、パスワードなど)。
  • healthcheckを設定し、MySQLが適切に起動したことを確認します。
  • netというDockerネットワークに接続します。

networks:
net:

  • netという名前のbridge ネットワークを作成します。redmineとredmine_mysqlコンテナはこのネットワークで通信します。

healthcheckについて

このコードは、Docker Composeの設定ファイルにおいて、MySQLコンテナの健全性をチェックするための healthcheck セクションを定義しています。

healthcheck は、コンテナの健全性を監視し、コンテナが正常に動作しているかどうかを確認するための機能です。この設定は、コンテナが起動した後に実行されます。

それぞれの設定項目の説明は以下の通りです。

  1. test: "mysqladmin ping -h 127.0.0.1 -u root -p$$MYSQL_ROOT_PASSWORD"
  • この行は、コンテナの健全性をチェックするためのコマンドを指定しています。
  • mysqladmin ping は、MySQLサーバーに対してping操作を実行し、サーバーが応答するかどうかを確認します。
  • -h 127.0.0.1 は、MySQLサーバーがローカルホスト(127.0.0.1)に存在することを指定しています。
  • -u root は、ルートユーザーでMySQLに接続することを指定しています。
  • -p$$MYSQL_ROOT_PASSWORD は、ルートユーザーのパスワードを指定しています。$$MYSQL_ROOT_PASSWORD は、環境変数 MYSQL_ROOT_PASSWORD の値を参照しています。
  1. timeout: 5s
  • この行は、healthcheckコマンドのタイムアウト時間を5秒に設定しています。つまり、コマンドが5秒以内に実行されない場合、healthcheckは失敗と見なされます。
  1. interval: 5s
  • この行は、healthcheckコマンドの実行間隔を5秒に設定しています。つまり、5秒ごとにhealthcheckコマンドが実行されます。
  1. retries: 10
  • この行は、healthcheckコマンドが失敗した場合の再試行回数を10回に設定しています。つまり、healthcheckコマンドが10回連続で失敗した場合、コンテナは健全でないと見なされ、再起動されます。

この healthcheck の設定は、MySQLコンテナが正常に起動し、MySQLサーバーが応答できる状態になるまで待機するために使用されています。healthcheckコマンドが成功すると、MySQLコンテナは健全であると見なされ、Redmineコンテナなどの依存するコンテナが起動します。

おわりに

今日は、dockerで作るRedmine環境について解説しました。

次回以降もdockerの構成ファイルについて説明していきたいと思います。

よっしー
よっしー

何か質問や相談があれば、コメントをお願いします。また、エンジニア案件の相談にも随時対応していますので、お気軽にお問い合わせください。

それでは、また明日お会いしましょう(^^)

コメント

タイトルとURLをコピーしました