DockerでColdFusionの開発環境構築

似たような記事はすでにネット上にはあるとは思いますが、自分も試してみたので改めて・・・

## 何をすればいいの？

ざっくりと説明すると、やることは`docker-compose.yml`を作成するくらいです。

```yml:docker-compose.yml
version: '3'

services:
   coldfusion:
     image: adobecoldfusion/coldfusion2018  # イメージファイル（2018の場合）
#    build: .    # 自分で作ったイメージを使う場合はimageの代わりにこちら（パスは必要に応じて変更）
     ports:
       - 8500:8500
     environment:
       - acceptEULA=YES
       - password=admin  # 管理画面のパスワード
       - language=ja     # ColdFusion管理画面を日本語化
       - LANG=C.UTF-8    # 日本語ファイル名を使えるように
     volumes:
       - ../src:/app     # ドキュメントルート
```

- ColdFusion2018を使用（他バージョンの取得方法については後述）
- 管理画面のパスワードは`admin`（必要に応じて変更可能）
- フォルダ構成は以下のような感じ（必要に応じて変更可能）

```text
  開発用フォルダ
    ├ docker
    │  └ docker-compose.yml （このファイル）
    └　src
        └ ドキュメントルート （ここにソースを置く）
```

`docker-compose.yml`を作成したら、以下のコマンドを叩いてコンテナを起動するだけです。
（初回起動時はイメージのダウンロードが行われます）

```sh
docker-compose up -d
```

実行例

```sh
PS C:\dev\coldfusion2018\docker> docker-compose up -d
Creating network "docker_default" with the default driver
Pulling coldfusion2018 (adobecoldfusion/coldfusion2018:)...
latest: Pulling from adobecoldfusion/coldfusion2018
7b1a6ab2e44d: Pull complete
2e4d3e66facb: Pull complete
3ce81c7c2c20: Pull complete
658684a0bad5: Pull complete
aef72e078a39: Pull complete
62ee7ebd015e: Pull complete
8e41f077914e: Pull complete
5403b0dca886: Pull complete
Digest: sha256:db870bfde5510106ecbc4a269bf7681441bfb5f56ea5e71ab18f5b05f40b62aa
Status: Downloaded newer image for adobecoldfusion/coldfusion2018:latest
Creating docker_coldfusion2018_1 ... done
PS C:\dev\coldfusion2018\docker> docker images
REPOSITORY                       TAG       IMAGE ID       CREATED       SIZE
adobecoldfusion/coldfusion2018   latest    ff6e5a50923b   3 weeks ago   985MB
```

`src`の下に何か色々作られると思いますが、ここに適当なファイル（下の例だとindex.cfm）を作って、動作確認。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1870139/fd2efce2-0a13-3b28-2046-94733b53b992.png)

動作確認は以下のURLで（index.cfmなのでファイル名は省略できます）。
http://localhost:8500/

管理画面も、パスワード`admin`でログインできます。
http://localhost:8500/CFIDE/administrator/

## イメージの取得について詳しく！

Adobeのドキュメント
https://helpx.adobe.com/coldfusion/using/docker-images-coldfusion.html

ColdFusionのDockerイメージは用意されているようです。
上記サイトの[Docker Hubのリンク](https://hub.docker.com/u/adobecoldfusion)先にイメージに関する情報があるようです。

2022/1/9時点のスクリーンショット
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1870139/6926d4ad-a412-f2ae-a147-7098235a9fc1.png)

上から順に、こんな感じで置いてありそうです。

- ColdFusion最新バージョン（現時点ではColdFusion2021と同じはず）
- ColdFusion2021
- ColdFusion2018
- パフォーマンスモニターツールセットの最新バージョン
- パフォーマンスモニターツールセット2021
- パフォーマンスモニターツールセット2018
- APIマネージャーの最新バージョン
- （以下略）

最新のColdFusionまたはColdFusion2018を、必要に応じて取得する感じですね。
現時点（2022/1/9時点）で2021年にリリースされた最新版を使っていない方も多いと思いますし（自分もそう）、とりあえずColdFusion2018の環境構築を試してみます。
（最新版が欲しい場合も、使うイメージファイルが変わるだけですね）

[ColdFusion2018のリンク先](https://hub.docker.com/r/adobecoldfusion/coldfusion2018)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1870139/1c48f7e8-88b6-bf9d-da1e-31c0f7eac7dc.png)

右側にある**Docker Pull Command**がイメージを取得するためのコマンドですね。
コマンド右側のボタンを押すと、以下のコマンドがコピーされます

```sh
docker pull adobecoldfusion/coldfusion2018
```

これをDockerが使える環境で（WindowsならPowerShellやコマンドプロンプトで）実行すれば、イメージが取得できます。

```sh
PS C:\dev\coldfusion2018> docker pull adobecoldfusion/coldfusion2018
Using default tag: latest
latest: Pulling from adobecoldfusion/coldfusion2018
7b1a6ab2e44d: Pull complete
2e4d3e66facb: Pull complete
3ce81c7c2c20: Pull complete
658684a0bad5: Pull complete
aef72e078a39: Pull complete
62ee7ebd015e: Pull complete
8e41f077914e: Pull complete
5403b0dca886: Pull complete
Digest: sha256:db870bfde5510106ecbc4a269bf7681441bfb5f56ea5e71ab18f5b05f40b62aa
Status: Downloaded newer image for adobecoldfusion/coldfusion2018:latest
docker.io/adobecoldfusion/coldfusion2018:latest
PS C:\dev\coldfusion2018>
```

もし、ColdFusion2018の最新バージョン以外のものが必要であれば、[Tags](https://hub.docker.com/r/adobecoldfusion/coldfusion2018/tags)をクリックすることで最新バージョン以外のものが確認できます。ちょっと古いバージョンが欲しければ、こんな感じでコマンドを叩けば取得できるようです。
（例: 2018.0.12のバージョンを取得）

```sh
docker pull adobecoldfusion/coldfusion2018:2018.0.12
```

正しくイメージが取得できていれば、`docker images`コマンドで確認できるはずです。
（TAGは`latest`または取得したバージョンのものになります）

```sh
PS C:\dev\coldfusion2018\docker> docker images
REPOSITORY                       TAG         IMAGE ID       CREATED        SIZE
adobecoldfusion/coldfusion2018   latest      ff6e5a50923b   3 weeks ago    985MB
```

## TODO（そのうち調べて書く）

これだけだと、データソースを設定しても、コンテナを再起動したら消えることがあるみたいですね（リビルドすると確実に消える）。自分で作った環境を他人に配布する方法を調べる必要がありそうです。