1
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?

Helix Core (Perforce)をDockerで構築する手順

Last updated at Posted at 2025-09-16

表題のとおり「Helix Core (以下、Perforce)」を Docker 上に構築する手順を紹介します。
基本的な手順はPerforceの公式ドキュメントに記載されているものと同じで、一部Docker用に書き換えてます。1
なお、Dockerまわりの機能の詳細については今回は割愛します。

また、細かい話は無視してとりあえず試してみたいという方は、以下のリポジトリをご確認ください。

今回の構成

  • ホストOS:Windows 11
  • Docker Desktop:4.38.0
  • ベースイメージ:Ubuntu 24.04 LTS(noble)

Dockerfileを作成

今回はUbuntuイメージをベースに、Perforce構築までの手順をDockerfileに記述します。
各コマンドの詳細はコメントに記載してます。

FROM ubuntu:noble

# いったんリポジトリを更新
RUN apt-get update

# 事前に必要となるパッケージをインストール
# 「--no-install-recommends」でインストールするパッケージを必須のものだけに絞り、
# 推奨パッケージが一緒にインストールされないように
RUN apt-get install -y --no-install-recommends ca-certificates wget gnupg

# のちの署名検証に使用するPerforceの公開鍵を登録
RUN wget -qO - https://package.perforce.com/perforce.pubkey | gpg --dearmor | tee /usr/share/keyrings/perforce.gpg

# Perforceのリポジトリを登録
# signed-by=/usr/share/keyrings/perforce.gpgで、
# 先で登録した公開鍵を署名検証の際に使用するよう設定
RUN echo "deb [signed-by=/usr/share/keyrings/perforce.gpg] https://package.perforce.com/apt/ubuntu noble release" > /etc/apt/sources.list.d/perforce.list

# 再度リポジトリの更新を行い、登録したリポジトリを反映する 
# ここで署名検証が行われる
RUN apt-get update

# p4-serverをインストール
RUN apt-get install -y p4-server

# Perforceのインスタンスを作成
# master : インスタンス名
# -p : サーバーアドレス
# -r : インスタンスのデータ保存されるルートディレクトリ
# -u : スーパーユーザー(管理者)のユーザー名
# -P : スーパーユーザー(管理者)のパスワード
# -n : 非対話モードで実行する
# --unicode : Unicodeモードを有効に(メタデータやログがUTF-8に変換される)
RUN /opt/perforce/sbin/configure-p4d.sh \
    master \
    -p 1666 \
    -r /opt/perforce/servers/master \
    -u adminuser \
    -P adminpass2468! \
    --unicode -n

# 作成したインスタンスを実行
CMD ["sh","-c","p4dctl start master && tail -F /opt/perforce/servers/master/logs/log"]

今回は各行で何をやっているのか分かりやすくするため、あえてRUNを分割しています。
実運用では、Dockerのビルドキャッシュの最適化を考慮し、ある程度まとめるのが望ましいかと思います。2

起動してみる

作成したDockerfileを使用して、Perforceを起動してみます。
Dockerfileを配置しているディレクトリで以下のコマンドを実行します。

# Dockerfileをビルド
docker build -t p4-server .
# ビルドしたイメージから実行
# Perforceが使用するポート1666をホストに公開
# インスタンスのデータをDockerの名前付きボリュームで永続化
docker run -d --name p4d -p 1666:1666 -v master:/opt/perforce/servers/master p4-server

コンテナ側で以下のようなログが表示されていたら成功です。

2025-xx-xx xx:xx:xx Started 'master' p4d service.
2025-xx-xx xx:xx:xx Started 1 services.

クライアント側で接続確認

クライアント用のツールを以下からダウンロードします。

起動直後は以下の画面が表示されるので、それぞれ入力して「OK」を選択。

  • Server : Perforceを構築しているサーバーのアドレス
  • User : スーパーユーザー(管理者)のユーザー名

DockerでPerforceを構築してみる_1.png

使用する文字エンコードを聞かれるので、選んで「OK」を選択。

DockerでPerforceを構築してみる_2.png

この画面が表示されたら接続成功です。

DockerでPerforceを構築してみる_3.png

おまけ

今回は分かりやすさ重視で、Dockerfileにすべて記載しましたが、以下のような問題があります。

  • インスタンス名やポート、データディレクトリなどのインスタンス固有の情報がDockerfileに記述されてるので、イメージの使いまわしができない。
  • Dockerfileにパスワードが直書きされてるので、パスワードがそのままイメージに焼きこまれてしまい、セキュリティ的にまずい。

なので、それらを解消した構成をGitHubに公開しています。

このリポジトリの構成では、環境変数を利用し、インスタンス固有の設定を外に切り出すことで、イメージを使いまわせるようにしてます。
また、DockerのBuild secrets3 を利用することで、パスワードなどの機密情報を環境変数やイメージに焼き込むことなく安全に渡せるようにしています。
Build secretsは一時的に/run/secrets/…としてマウントされ、ビルド後のイメージには残りません。

  1. Server Administration Documentation - Installation

  2. Dockerビルドキャッシュ

  3. Build secrets

1
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
1
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?