🗾

ColdFusion Docker を日本語化

2023/09/29に公開

はじめに

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」というサイトになります。

http://localhost/CFIDE/administrator/

  • ユーザー名: admin
  • パスワード: password

で入ります。以下は雰囲気だけですが、かるく画面ショットです。

サーバー設定

データとサービス
PostgreSQL/MySQL データベース、AWS/GCP/Azure クラウド連携設定等があります。

参考

おわりに

ColdFusion Docker 公式の説明ではお手軽起動できますが、本格的に日本語対応するとなると少しアレンジが必要だったのでまとめました。

エンタープライズ機能が一通り揃っているWebプラットフォームに触れてみてはいかがでしょうか?

それではまた!

コラボスタイル Developers

Discussion