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でわからないことだらけなので変更すべき点はいくらでもありそう…。