Dockerで構築したい!
面倒を避けるためにDockerで構築しました。
openxpki-dockerのREADME.mdの手順の通りにやったはずですが、それでもエラーがでて困り果てていました。
というのも”Docker Desktop for Windows”(というかWindows)ではシンボリックリンクが壊れるようです。なのでconfigリポジトリ中の”config.d/realm/democa/”に”config.d/realm/realm.tpl/”内の全てのファイルやディレクトリをコピーする必要があるのです。
ところが、私は間違えて”config.d/realm/”に”config.d/realm/realm.tpl/*”をコピーしていたのでエラーになっていたのです。
したがって、上記を含めてREADME.mdの正しい手順の通り実行すれば、以下のDockerfileもdocker-compose.yamlも必要ないはずです。
手順0. openxpki-dockerをダウンロード
# 正直次のdockerfileとcomposeファイルがあれば必要ないはずですが一応
git clone https://github.com/openxpki/openxpki-docker.git
cd ./openxpki-docker/
git checkout v3.8
# Windowsコマンドは分からないので…
# cp contrib/wait_on_init.yaml openxpki-config/config.d/system/local.yaml
手順1. 専用のDockerfileを作成
私の環境ではファイルの名前は”openxpki.dockerfile”としましたが、ご自由に。
FROM whiterabbitsecurity/openxpki3
RUN /bin/bash -c "cd /root/ \
&& apt update -y \
&& apt install git -y \
&& git clone https://github.com/openxpki/openxpki-config.git --single-branch --branch=community \
&& cd ./openxpki-config/ \
&& git checkout v3.24 \
&& rm -rf /etc/openxpki/* \
&& rm ./contrib/sql/schema-mysql.sql ./contrib/sql/schema-oracle.sql ./contrib/sql/schema-psql.sql ./contrib/sql/schema-sqlite.sql \
&& mv -f ./* /etc/openxpki/ \
&& /bin/bash"
手順2. docker-compose.ymlを修正
version: "3"
services:
db:
# restart: always
image: mariadb:10
command: --default-authentication-plugin=mysql_native_password
volumes:
- openxpkidb:/var/lib/mysql
- openxpkidbsocket:/var/run/mysqld/
# - openxpki-config/contrib/sql/schema-mysql.sql:/docker-entrypoint-initdb.d/schema-mysql.sql
- openxpki-sql:/docker-entrypoint-initdb.d/
environment:
MYSQL_DATABASE: openxpki
MYSQL_USER: openxpki
MYSQL_PASSWORD: openxpki
MYSQL_ROOT_PASSWORD: topsecret
depends_on:
make_openxpki:
condition: service_completed_successfully
healthcheck:
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
interval: 10s
timeout: 5s
retries: 3
start_period: 8s
make_openxpki:
# image: whiterabbitsecurity/openxpki3
image: ori/openxpki
working_dir: /root/
command: /bin/bash
volumes:
- openxpki-config:/etc/openxpki/
- openxpki-sql:/etc/openxpki/contrib/sql/
openxpki-server:
# restart: always
# image: whiterabbitsecurity/openxpki3
image: ori/openxpki
command: /usr/bin/openxpkictl start --no-detach
# command: /bin/bash /etc/openxpki/contrib/sampleconfig.sh && /usr/bin/openxpkictl start --no-detach
volumes:
- openxpki-config:/etc/openxpki
- openxpkilog:/var/log/openxpki
- openxpkisocket:/var/openxpki/
- openxpkidbsocket:/var/run/mysqld/
# this will not work on all OS
- "/etc/timezone:/etc/timezone:ro"
- "/etc/localtime:/etc/localtime:ro"
depends_on:
db:
condition: service_healthy
openxpki-client:
# restart: always
# image: whiterabbitsecurity/openxpki3
image: ori/openxpki
command: /usr/bin/start-apache
ports:
- "8080:80/tcp"
- "8443:443/tcp"
volumes:
- openxpki-config:/etc/openxpki
- openxpkilog:/var/log/openxpki
- openxpkisocket:/var/openxpki/
- openxpkidbsocket:/var/run/mysqld/
depends_on:
- openxpki-server
volumes:
openxpkidb:
openxpkisocket:
openxpkidbsocket:
openxpkilog:
openxpki-config:
openxpki-sql:
手順3. OpenXPKIを起動
docker build -f openxpki.dockerfile -t ori/openxpki .
docker compose up -d
手順4. サイトにアクセスしてみる
起動が完了したら次のURLへGo!サイトのURLは以下の通り。
“https://localhost:8443/openxpki/#/openxpki/home”
ユーザ情報(ログイン/パスワード)は次のいづれかから。それぞれ権限が違うようだが詳細は不明。これらのアカウントを利用する場合は”Authentication method“欄で”Test Accounts“を選択しなければならないので注意。
- rose / openxpki(roll:RA Operator)
- rob / openxpki(roll:RA Operator)
- alice / openxpki(roll:Users)
- bob / openxpki(roll:Users)
- caop / openxpki(CA Operator)
- raop / openxpki(???)