Dockerを使ってあれこれやってみたかったので、過去の記事の応用編を…。
構築する環境
コマンドを叩くだけで以下の環境を構築するのが目的です。
* ColdFusion 2018
* PostgreSQL
* PostgreSQL
今回のサンプルは初回起動時にColdFusion側でデータソースの設定を行い、
PostgreSQL側ではテーブルを作成する感じにしています。
Dockerfileを利用したりすればもっと色々とできそう…。
フォルダ構成
以下のようなフォルダ構成にしています。
ColdFusion2018_Docker
│ ├ coldfusion.env … ColdFusion用の設定ファイル
│ └ Docker-compose.yml
│
├─html
│ ├ index.cfm … サンプルコード
│ └ setupColdFusion.cfm … 初回起動時のセットアップ用コード
│
└─initdb
└ setup.sql … 初回起動時のセットアップ用クエリ
│ ├ coldfusion.env … ColdFusion用の設定ファイル
│ └ Docker-compose.yml
│
├─html
│ ├ index.cfm … サンプルコード
│ └ setupColdFusion.cfm … 初回起動時のセットアップ用コード
│
└─initdb
└ setup.sql … 初回起動時のセットアップ用クエリ
各種設定ファイル
Docker-compose.yml
特筆すべきことは特にないですね…。
version: "3"
services:
coldfusion:
container_name: DevCF2018
image: eaps-docker-coldfusion.bintray.io/cf/coldfusion:latest
depends_on:
- db
ports:
- "8500:8500"
volumes:
- "./html:/app"
env_file:
- coldfusion.env
networks:
- webnet
db:
container_name: DevPostgres
image: postgres:latest
ports:
- "5432:5432"
volumes:
- dbdata:/var/lib/postgresql/data
- ./initdb:/docker-entrypoint-initdb.d
environment:
POSTGRES_HOST_AUTH_METHOD: trust
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: test_db
networks:
- webnet
volumes:
dbdata:
networks:
webnet:
coldfusion.env
セットアップ実行時のコードを3行目で指定しています。
あと英語読めないので日本語設定にしています。
acceptEULA=YES password=ColdFusion123 setupScript=setupColdFusion.cfm language=ja
setupColdFusion.cfm
Administrator APIを利用して、データソース設定をしているだけです。
<cfscript>
// // Login is always required. This example uses two lines of code.
adminObj = createObject("component","CFIDE.adminapi.administrator");
adminObj.login("ColdFusion123"); //CF Admin password
// PostgreSQLのデータソース設定
datasource = createObject("component", "CFIDE.adminapi.datasource");
datasource.setPostGreSQL(name="SamplePostgresDB",
host="host.docker.internal",
database="test_db",
username="postgres",
password="postgres");
</cfscript>
後は起動するだけ
docker-compose up -d
実行後にColdFusion Administratorにアクセスし、
データソースを確認すれば「SamplePostgresDB」が追加されています。
まだまだDockerでわからないことだらけなので変更すべき点はいくらでもありそう…。


