ColdFusion Docker を日本語化
はじめに
Adobe から発売されている Web アプリケーションプラットフォーム、Adobe ColdFusion の公式 Docker イメージを日本語化した状態で起動するまでの流れです。
ColdFusion がどんなものか10分程度で体験できるようになります。
Docker イメージ
現在は公式イメージとして Docher Hub と Amazon ECR リポジトリから提供されています。
今回は Amazon ECR にある最新バージョン「ColdFusion 2023」のイメージ coldfusion:latest-2023
をベースにして作成します。
つくる
日本語化するにあたり4つの導入があります。
- タイムゾーンを日本時間にする (Asia/Tokyo)
- コンソール出力を日本語メッセージにする (ja_JP.UTF-8)
- 管理ページ ColdFusion Administrator を日本語表示にする
- 日本語フォントを導入する※ (Noto CJK)
※サーバーの起動自体に日本語フォントは不要ですが、画像生成系の関数 ImageDrawText() で日本語テキストをレンダリングする場合に使われます。
Dockerfile
FROM public.ecr.aws/adobe/coldfusion:latest-2023
ARG DEBIAN_FRONTEND=noninteractive
RUN apt update && \
apt install -y tzdata language-pack-ja fonts-noto-cjk && \
ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime && \
localedef -f UTF-8 -i ja_JP ja_JP.UTF-8 && \
fc-cache -fv && \
apt clean && \
rm -rf /var/lib/apt/lists/*
ENV LANG ja_JP.UTF-8
ENV LANGUAGE ja_JP:en
ENV LC_ALL ja_JP.UTF-8
ENV TZ Asia/Tokyo
ベースのディストリビューションは Ubuntu 系(現在は22.04)なので必要なパッケージも apt
を使ってインストールしておきます。
docker-compose.yaml
version: "3.9"
services:
web:
build:
context: .
dockerfile: Dockerfile
volumes:
- ./app:/app
ports:
- 127.0.0.1:80:8500
environment:
acceptEULA: YES
password: password
language: ja
deploymenType: Development
enableSecureProfile: true
installModules: postgresql,mysql,zip,image,scheduler,mail,awss3,awssns
setupScript: setup/server.cfm
volumes /app
/app
にマウントしたディレクトリが Web サーバーのルートになります。
installModules
ColdFusion 2023 ではサブ機能がモジュール化されているので、必要なパッケージを選んで入れます。初回起動時にパッケージマネージャー cfpm
によってモジュールに関連する JAR ファイルがダウンロード&自動インストールされます。
または一度コンテナを起動して ColdFusion Administrator のパッケージマネージャーのメニューから手動で適宜インストールするか、そのパッケージ名をメモして組み込むと良いです。
詳細は ColdFusion パッケージマネージャー に記載があります。
setupScript
ColdFusion 言語 (CFML) で初回起動時の設定を記述したスクリプトファイルを指定できます。ファイルパスは /app
にマウントしたパスからの相対指定になります。
app/setup/server.cfm
主にはデータベース接続やメールサーバー、タイムアウト等の基本設定をします。
<cfscript>
writeLog("custom setup");
// Admin API Auth
adminAPI = new CFIDE.adminapi.administrator();
if(!adminAPI.login(server.system.environment.password, "admin")) {
throw "ColdFusion Administrator login failed.";
}
// Disable Wizard
adminAPI.setAdminProperty("SetupWizardFlag", false);
</cfscript>
server.system.environment
構造体経由で docker-compose.yaml で設定した環境変数を受け取れるので、環境別カスタマイズする場合に活用できます。
管理系のAPIは以下のサイトに一覧があります。
ColdFusion Administrator API リファレンス
app/index.cfm
コンテンツ本文を index.cfm
で作ると、index.html
のようにデフォルトで表示するファイルになります。UTF-8文字コードセットで保存します。
<html>
<head>
<meta charset="utf-8">
<title>サンプル</title>
</head>
<body>
今日は <cfoutput>#lsDateFormat(now())#</cfoutput> です。
</body>
</html>
構成
sample/
Dockerfile
docker-compose.yaml
app/
index.cfm
setup/
server.cfm
コンテナ起動
初回起動
docker compose up -d
でコンテナ起動します。
初回の設定中に何度か ColdFusion サーバーが再起動されるので、ログを見ながら待ちます。
最終的に「ColdFusion: アプリケーションサービスが使用可能になりました」のログが出れば、完全に起動した状態になります。
web ログ例
2023-09-29 10:43:54 Updating webroot to /app
2023-09-29 10:43:54 Configuring virtual directories
2023-09-29 10:43:54 Updating password
2023-09-29 10:43:54 Updating language
2023-09-29 10:43:54 insert jvm arg
2023-09-29 10:43:54 Serial Key: Not Provided
2023-09-29 10:43:54 Previous Serial Key: Not Provided
2023-09-29 10:43:54 Starting ColdFusion
2023-09-29 10:43:54 Starting ColdFusion 2023 server ...
2023-09-29 10:44:01 ======================================================================
2023-09-29 10:44:01 ColdFusion 2023 server has been started.
2023-09-29 10:44:01 ColdFusion 2023 will write logs to /opt/coldfusion/cfusion/bin/../logs/coldfusion-out.log
2023-09-29 10:44:01 ======================================================================
2023-09-29 10:44:07 [] Checking server startup status...
2023-09-29 10:44:17 [] Checking server startup status...
2023-09-29 10:44:28 [] Checking server startup status...
2023-09-29 10:44:38 [] Checking server startup status...
2023-09-29 10:44:49 [] Checking server startup status...
2023-09-29 10:44:59 [] Checking server startup status...
2023-09-29 10:45:09 [] Checking server startup status...
2023-09-29 10:45:20 [] Checking server startup status...
2023-09-29 10:45:30 [] Checking server startup status...
2023-09-29 10:45:36 Installing Modules
2023-09-29 10:45:40 cfpm>次のパッケージがインストールされます : image:2023.0.0.330468,awssns:2023.0.0.330468,awss3:2023.0.0.330468,mail:2023.0.0.330468,scheduler:2023.0.0.330468,zip:2023.0.0.330468,mysql:2023.0.0.330468,postgresql:2023.0.0.330468
2023-09-29 10:45:40 依存パッケージ commons-io-2.7.jar をダウンロードしています
2023-09-29 10:45:40 依存パッケージ xmpcore-1.0.jar をダウンロードしています
2023-09-29 10:45:40 依存パッケージ metadata-extractor-2.8.1.jar をダウンロードしています
2023-09-29 10:45:40 依存パッケージ tika-core-1.20.jar をダウンロードしています
2023-09-29 10:45:40 依存パッケージ jai_core-1.0.jar をダウンロードしています
2023-09-29 10:45:40 依存パッケージ jai_imageio-1.1.jar をダウンロードしています
2023-09-29 10:45:40 依存パッケージ jai_codec-1.0.jar をダウンロードしています
2023-09-29 10:45:40 依存パッケージ common-image-3.3.2.jar をダウンロードしています
2023-09-29 10:45:40 依存パッケージ commons-imaging-1.0-alpha2.jar をダウンロードしています
2023-09-29 10:45:40 パッケージ image-2023.0.0.330468.jar をダウンロードしています
2023-09-29 10:45:40 image (2023.0.0.330468) パッケージとその依存関係が正常にダウンロードされました。
2023-09-29 10:45:41 依存パッケージ commons-codec-1.10.jar をダウンロードしています
2023-09-29 10:45:41 依存パッケージ jackson-annotations-2.9.0.jar をダウンロードしています
2023-09-29 10:45:41 依存パッケージ commons-logging-1.2.jar をダウンロードしています
2023-09-29 10:45:41 依存パッケージ eventstream-1.0.1.jar をダウンロードしています
2023-09-29 10:45:41 依存パッケージ slf4j-api-1.7.12.jar をダウンロードしています
2023-09-29 10:45:41 依存パッケージ annotations-2.10.13.jar をダウンロードしています
2023-09-29 10:45:41 依存パッケージ jackson-core-2.9.8.jar をダウンロードしています
2023-09-29 10:45:41 依存パッケージ utils-2.10.13.jar をダウンロードしています
2023-09-29 10:45:41 依存パッケージ reactive-streams-1.0.2.jar をダウンロードしています
2023-09-29 10:45:41 依存パッケージ jackson-databind-2.9.8.jar をダウンロードしています
2023-09-29 10:45:41 依存パッケージ http-client-spi-2.10.13.jar をダウンロードしています
2023-09-29 10:45:41 依存パッケージ profiles-2.10.13.jar をダウンロードしています
2023-09-29 10:45:41 依存パッケージ apache-client-2.10.13.jar をダウンロードしています
2023-09-29 10:45:41 依存パッケージ sdk-core-2.10.13.jar をダウンロードしています
2023-09-29 10:45:41 依存パッケージ protocol-core-2.10.13.jar をダウンロードしています
2023-09-29 10:45:41 依存パッケージ regions-2.10.13.jar をダウンロードしています
2023-09-29 10:45:41 依存パッケージ auth-2.10.13.jar をダウンロードしています
2023-09-29 10:45:41 依存パッケージ aws-core-2.10.13.jar をダウンロードしています
2023-09-29 10:45:41 依存パッケージ aws-query-protocol-2.10.13.jar をダウンロードしています
2023-09-29 10:45:41 依存パッケージ sns-2.10.13.jar をダウンロードしています
2023-09-29 10:45:41 パッケージ awssns-2023.0.0.330468.jar をダウンロードしています
2023-09-29 10:45:42 awssns (2023.0.0.330468) パッケージとその依存関係が正常にダウンロードされました。
2023-09-29 10:45:42 依存パッケージ aws-xml-protocol-2.10.13.jar をダウンロードしています
2023-09-29 10:45:42 依存パッケージ s3-2.10.13.jar をダウンロードしています
2023-09-29 10:45:43 パッケージ awss3-2023.0.0.330468.jar をダウンロードしています
2023-09-29 10:45:43 awss3 (2023.0.0.330468) パッケージとその依存関係が正常にダウンロードされました。
2023-09-29 10:45:43 依存パッケージ bcpkix-jdk15on-153.jar をダウンロードしています
2023-09-29 10:45:43 依存パッケージ bcmail-jdk15on-153.jar をダウンロードしています
2023-09-29 10:45:43 パッケージ mail-2023.0.0.330468.jar をダウンロードしています
2023-09-29 10:45:44 mail (2023.0.0.330468) パッケージとその依存関係が正常にダウンロードされました。
2023-09-29 10:45:44 依存パッケージ c3p0-0.9.1.1.jar をダウンロードしています
2023-09-29 10:45:44 依存パッケージ HikariCP-java7-2.4.13.jar をダウンロードしています
2023-09-29 10:45:44 依存パッケージ quartz-2.4.0.jar をダウンロードしています
2023-09-29 10:45:44 パッケージ scheduler-2023.0.0.330468.jar をダウンロードしています
2023-09-29 10:45:45 scheduler (2023.0.0.330468) パッケージとその依存関係が正常にダウンロードされました。
2023-09-29 10:45:45 依存パッケージ commons-net-3.6.jar をダウンロードしています
2023-09-29 10:45:45 依存パッケージ commons-httpclient-3.1.jar をダウンロードしています
2023-09-29 10:45:45 依存パッケージ jsch-0.1.54.jar をダウンロードしています
2023-09-29 10:45:45 依存パッケージ commons-collections-3.2.2.jar をダウンロードしています
2023-09-29 10:45:45 依存パッケージ zip4j-1.3.1_cf.jar をダウンロードしています
2023-09-29 10:45:45 パッケージ zip-2023.0.0.330468.jar をダウンロードしています
2023-09-29 10:45:45 zip (2023.0.0.330468) パッケージとその依存関係が正常にダウンロードされました。
2023-09-29 10:45:46 依存パッケージ joda-time-2.8.jar をダウンロードしています
2023-09-29 10:45:46 依存パッケージ adobe_drivers_common-2.0.jar をダウンロードしています
2023-09-29 10:45:46 依存パッケージ adobe_mysqldriver-5.1.4.000266.jar をダウンロードしています
2023-09-29 10:45:46 パッケージ mysql-2023.0.0.330468.jar をダウンロードしています
2023-09-29 10:45:46 mysql (2023.0.0.330468) パッケージとその依存関係が正常にダウンロードされました。
2023-09-29 10:45:47 依存パッケージ postgresql-42.5.1.jar をダウンロードしています
2023-09-29 10:45:47 パッケージ postgresql-2023.0.0.330468.jar をダウンロードしています
2023-09-29 10:45:47 postgresql (2023.0.0.330468) パッケージとその依存関係が正常にダウンロードされました。
2023-09-29 10:45:49 パッケージがダウンロードされました。これからインストールされます.
2023-09-29 10:45:52 image パッケージがサーバーにインストールされました.
2023-09-29 10:45:53 awssns パッケージがサーバーにインストールされました.
2023-09-29 10:45:55 awss3 パッケージがサーバーにインストールされました.
2023-09-29 10:45:57 mail パッケージがサーバーにインストールされました.
2023-09-29 10:45:57 scheduler パッケージがサーバーにインストールされました.
2023-09-29 10:45:57 zip パッケージがサーバーにインストールされました.
2023-09-29 10:45:57 mysql パッケージがサーバーにインストールされました.
2023-09-29 10:45:57 postgresql パッケージがサーバーにインストールされました.
2023-09-29 10:45:57
2023-09-29 10:45:57 cfpm>さようなら。
2023-09-29 10:45:58 Modules installed
2023-09-29 10:45:58 No Settings to be imported !
2023-09-29 10:45:58 Restarting ColdFusion
2023-09-29 10:45:59 Stopping ColdFusion 2023 server, please wait
2023-09-29 10:46:09 ColdFusion 2023 server has been stopped
2023-09-29 10:46:09 Starting ColdFusion 2023 server ...
2023-09-29 10:46:16 ======================================================================
2023-09-29 10:46:16 ColdFusion 2023 server has been started.
2023-09-29 10:46:16 ColdFusion 2023 will write logs to /opt/coldfusion/cfusion/bin/../logs/coldfusion-out.log
2023-09-29 10:46:16 ======================================================================
2023-09-29 10:46:21 [] Checking server startup status...
2023-09-29 10:46:32 [] Checking server startup status...
2023-09-29 10:46:42 [] Checking server startup status...
2023-09-29 10:46:53 [] Checking server startup status...
2023-09-29 10:47:03 [] Checking server startup status...
2023-09-29 10:47:13 [] Checking server startup status...
2023-09-29 10:47:24 [] Checking server startup status...
2023-09-29 10:47:34 [] Checking server startup status...
2023-09-29 10:47:45 [] Checking server startup status...
2023-09-29 10:48:00 No Modules to be imported !
2023-09-29 10:48:01 Restarting ColdFusion
2023-09-29 10:48:01 Stopping ColdFusion 2023 server, please wait
2023-09-29 10:48:11 ColdFusion 2023 server has been stopped
2023-09-29 10:48:11 Starting ColdFusion 2023 server ...
2023-09-29 10:48:18 ======================================================================
2023-09-29 10:48:18 ColdFusion 2023 server has been started.
2023-09-29 10:48:18 ColdFusion 2023 will write logs to /opt/coldfusion/cfusion/bin/../logs/coldfusion-out.log
2023-09-29 10:48:18 ======================================================================
2023-09-29 10:48:24 [] Checking server startup status...
2023-09-29 10:48:34 [] Checking server startup status...
2023-09-29 10:48:44 [] Checking server startup status...
2023-09-29 10:48:55 [] Checking server startup status...
2023-09-29 10:49:05 [] Checking server startup status...
2023-09-29 10:49:16 [] Checking server startup status...
2023-09-29 10:49:26 [] Checking server startup status...
2023-09-29 10:49:37 [] Checking server startup status...
2023-09-29 10:49:47 [] Checking server startup status...
2023-09-29 10:50:03 External Addons: Disabled
2023-09-29 10:50:03 External Session Storage: Disabled
2023-09-29 10:50:03 Invoking custom CFM, setup/server.cfm
2023-09-29 10:50:04 Retaining setupScript in the webroot
2023-09-29 10:50:04 Attempting to enable secure profile
2023-09-29 10:50:05 Secure Profile Enabled: YES Deployment Type not set , set to default(Development)
2023-09-29 10:50:05 Profile not set , set to default(Development Profile)
2023-09-29 10:50:05 Cleaning up setup directories
2023-09-29 10:50:05 restart required:
2023-09-29 10:50:05 1
2023-09-29 10:50:05 Restarting ColdFusion
2023-09-29 10:50:05 Stopping ColdFusion 2023 server, please wait
2023-09-29 10:50:15 ColdFusion 2023 server has been stopped
2023-09-29 10:50:15 Starting ColdFusion 2023 server ...
2023-09-29 10:50:22 ======================================================================
2023-09-29 10:50:22 ColdFusion 2023 server has been started.
2023-09-29 10:50:22 ColdFusion 2023 will write logs to /opt/coldfusion/cfusion/bin/../logs/coldfusion-out.log
2023-09-29 10:50:22 ======================================================================
2023-09-29 10:50:28 [] Checking server startup status...
2023-09-29 10:50:39 [] Checking server startup status...
2023-09-29 10:50:49 [] Checking server startup status...
2023-09-29 10:51:00 [] Checking server startup status...
2023-09-29 10:51:11 [] Checking server startup status...
2023-09-29 10:51:21 [] Checking server startup status...
2023-09-29 10:51:32 [] Checking server startup status...
2023-09-29 10:51:42 [] Checking server startup status...
2023-09-29 10:51:53 [] Checking server startup status...
2023-09-29 10:51:58 9 29, 2023 10:51:47 午前 Information [main] - awsdynamodb パッケージはインストールされていないので、デプロイされません。
2023-09-29 10:51:58 9 29, 2023 10:51:47 午前 Information [main] - gcpfirestore パッケージはインストールされていないので、デプロイされません。
2023-09-29 10:51:58 9 29, 2023 10:51:47 午前 Information [main] - gcppubsub パッケージはインストールされていないので、デプロイされません。
2023-09-29 10:51:58 9 29, 2023 10:51:47 午前 Information [main] - gcpstorage パッケージはインストールされていないので、デプロイされません。
2023-09-29 10:51:58 9 29, 2023 10:51:47 午前 Information [main] - report パッケージはインストールされていないので、デプロイされません。
2023-09-29 10:51:58 9 29, 2023 10:51:47 午前 Information [main] - exchange パッケージはインストールされていないので、デプロイされません。
2023-09-29 10:51:58 9 29, 2023 10:51:47 午前 Information [main] - sharepoint パッケージはインストールされていないので、デプロイされません。
2023-09-29 10:51:58 9 29, 2023 10:51:49 午前 Information [main] - graphqlclient パッケージはインストールされていないので、デプロイされません。
2023-09-29 10:51:58 9 29, 2023 10:51:49 午前 Information [main] - ColdFusion が開始しました
2023-09-29 10:51:58 9 29, 2023 10:51:52 午前 Information [main] - ColdFusion: アプリケーションサービスが使用可能になりました
いざアクセス
http://localhost/ にアクセスしてみましょう。
でました!
管理画面
管理は「ColdFusion Administrator」というサイトになります。
- ユーザー名: admin
- パスワード: password
で入ります。以下は雰囲気だけですが、かるく画面ショットです。
サーバー設定
データとサービス
PostgreSQL/MySQL データベース、AWS/GCP/Azure クラウド連携設定等があります。
参考
-
https://miko.info/docker-coldfusion
データベース接続も記載あり。 - https://qiita.com/t20190127/items/74ebedc41fe032179fe8
おわりに
ColdFusion Docker 公式の説明ではお手軽起動できますが、本格的に日本語対応するとなると少しアレンジが必要だったのでまとめました。
エンタープライズ機能が一通り揃っているWebプラットフォームに触れてみてはいかがでしょうか?
それではまた!
Discussion