概要
JS7 jobscheduler を手っ取り早く触りたい人向け
docker-composeでの実行方法
準備
必要なファイル、ディレクトリを準備します。
docker-compose.yml
version: '3'
services:
db:
image: mysql:8.0
ports:
- "3306:3306"
command:
- --default-authentication-plugin=caching_sha2_password
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_bin
- --skip-character-set-client-handshake
volumes:
- db_data:/var/lib/mysql
networks:
- js7network
environment:
MYSQL_ROOT_PASSWORD: iLoveMySQL8.0!
MYSQL_DATABASE: js7db
MYSQL_USER: js7user
MYSQL_PASSWORD: js7password
restart: "no"
js7-joc-primary:
depends_on:
- db
image: sosberlin/js7:joc-${JS7VERSION}
hostname: js7-joc-primary
ports:
- "4446:4446"
volumes:
- js7-joc-primary-config:/var/sos-berlin.com/js7/joc/resources/joc
- js7-joc-primary-logs:/var/log/sos-berlin.com/js7/joc
networks:
- js7network
environment:
RUN_JS_JAVA_OPTIONS: -Xmx256m
RUN_JS_USER_ID: "${JS7USERID}:${JS7GROUPID}"
restart: "no"
js7-controller-primary:
image: sosberlin/js7:controller-${JS7VERSION}
hostname: js7-controller-primary
volumes:
- js7-controller-primary:/var/sos-berlin.com/js7/controller
networks:
- js7network
environment:
RUN_JS_JAVA_OPTIONS: -Xmx256m
RUN_JS_USER_ID: "${JS7USERID}:${JS7GROUPID}"
restart: "no"
js7-agent-primary:
image: sosberlin/js7:agent-${JS7VERSION}
hostname: js7-agent-primary
volumes:
- js7-agent-primary:/var/sos-berlin.com/js7/agent/
networks:
- js7network
environment:
RUN_JS_JAVA_OPTIONS: -Xmx256m
RUN_JS_USER_ID: "${JS7USERID}:${JS7GROUPID}"
restart: "no"
volumes:
db_data:
driver: local
driver_opts:
type: none
device: ${PWD}/db_data
o: bind
js7-joc-primary-config:
driver: local
driver_opts:
type: none
device: ${PWD}/js7-joc-primary-config
o: bind
js7-joc-primary-logs:
driver: local
driver_opts:
type: none
device: ${PWD}/js7-joc-primary-logs
o: bind
js7-controller-primary:
driver: local
driver_opts:
type: none
device: ${PWD}/js7-controller-primary
o: bind
js7-agent-primary:
driver: local
driver_opts:
type: none
device: ${PWD}/js7-agent-primary
o: bind
networks:
js7network:
ver 2.5.2 より、controller, agentのvolume指定パスが変更となっています。
本ページ下部に、ver 2.5.1 までの docker-compose.yml の例を残してありますので、利用バージョンによってはそちらを参照してください。
hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">org.mariadb.jdbc.Driver</property>
<property name="hibernate.connection.password">js7password</property>
<property name="hibernate.connection.url">jdbc:mariadb://db:3306/js7db?allowPublicKeyRetrieval=true&useSSL=false</property>
<property name="hibernate.connection.username">js7user</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
<property name="hibernate.show_sql">false</property>
<property name="hibernate.connection.autocommit">false</property>
<property name="hibernate.format_sql">true</property>
<property name="hibernate.temp.use_jdbc_metadata_defaults">false</property>
<property name="hibernate.connection.provider_class">org.hibernate.hikaricp.internal.HikariCPConnectionProvider</property>
<property name="hibernate.hikari.maximumPoolSize">10</property>
</session-factory>
</hibernate-configuration>
.env
(環境変数用) ※バージョンは任意
echo -e "JS7USERID=$(id -u)\nJS7GROUPID=0\nJS7VERSION=2-5-7" > .env
# 確認
cat .env
JS7USERID=1000
JS7GROUPID=1000
JS7VERSION=2-5-7
ディレクトリ
mkdir db_data
mkdir js7-agent-primary
mkdir js7-controller-primary
mkdir js7-joc-primary-config
mkdir js7-joc-primary-logs
ここまでで、下記のような構成になります。
.
├── .env
├── db_data
├── docker-compose.yml
├── hibernate.cfg.xml
├── js7-agent-primary
├── js7-controller-primary
├── js7-joc-primary-config
└── js7-joc-primary-logs
コンテナ起動
まずコンテナを起動
$ docker compose up -d
# 確認
$ docker compose ps
NAME COMMAND SERVICE STATUS PORTS
js7-db-1 "docker-entrypoint.s…" db running 0.0.0.0:3306->3306/tcp, 33060/tcp
js7-js7-agent-primary-1 "sh /usr/local/bin/e…" js7-agent-primary running
js7-js7-controller-primary-1 "sh /usr/local/bin/e…" js7-controller-primary running
js7-js7-joc-primary-1 "sh /usr/local/bin/e…" js7-joc-primary running 0.0.0.0:4446->4446/tcp
hibernate.cfg.xml
をVolumeマウント先に上書きコピー (インストール時に使用します)
cp -f hibernate.cfg.xml js7-joc-primary-config/
js7-joc-primary にて 上記ファイルを指定してインストール
docker compose exec js7-joc-primary /bin/sh -c /opt/sos-berlin.com/js7/joc/install/joc_install_tables.sh
# ログ確認
ls -l js7-joc-primary-logs/
# js7-joc-primary のみ再起動
docker compose restart js7-joc-primary
動作チェック
あとは、ブラウザで js7-joc-primary にて指定したポート番号にアクセスしてください。
http://localhost:4446/
※初期ユーザーは Account: root / password: root です
初回ログイン直後は、Controllerの登録画面が出てきますので、登録を行ってください。
本例では http://js7-controller-primary:4444
です。
次にエージェントの登録を行います。
もし画面が分からなくなった場合はこちらからManager/Agentの登録・編集画面が開けます。
必要項目を入力して、登録してください。
Agent ID: js7-agent-primary
(ホスト名でよい)
Agent Name: js7-agent-primary
(ホスト名でよい)
Title: Descriptionにあたるもの(空でもよい)
Alias Names: 任意(空でもよい) ※本例ではサンプルデータ利用のためにprimaryAgent
とします。
URL: 本例ではhttp://js7-agent-primary:4445
となります。
(Ver 2.3.x からの変更点 )
さらに登録したエージェントをDeployしてください。
これで本エージェントは利用可能となります。
Statusが synchronized に変わります。
ダッシュボードを見ると、Controller, Agent, DB などの稼働状況を確認できます。
参考 agent-plus イメージについて
エージェント用のDockerイメージには、通常のエージェント以外にも、PowerShell、JS7モジュールを追加した、agent-plusイメージも提供されています。
もしPowerShellの利用に慣れている方は、こちらをお勧めします。
既に通常エージェントで構築した後でも、イメージの指定をsosberlin/js7:agent-${JS7VERSION}-plus
と書き換えて起動しなおせば、すぐに反映できます。
version: '3'
services:
# (省略)
js7-agent-primary:
- image: sosberlin/js7:agent-${JS7VERSION}
+ image: sosberlin/js7:agent-${JS7VERSION}-plus
hostname: js7-agent-primary
# (省略)
参考 アップデート時の対応
# もし稼働中の場合は一旦停止
docker compose stop
# .env を 新バージョン用に書き換え
echo -e "JS7USERID=$(id -u)\nJS7GROUPID=$(id -g)\nJS7VERSION=2-x-x" > .env
# joc,controllr,agent とも起動したことを確認
docker compose up -d
docker compose ps
# もしうまく起動しない場合は、コンテナ、ボリュームを削除し、起動し直してください
# ボリュームを削除しても、マウント先データは消えないので、設定は残ります
docker compose down -v
docker compose up -d
docker compose ps
# (db変更反映のため)上書きインストール実行
cp -f hibernate.cfg.xml js7-joc-primary-config/
docker compose exec js7-joc-primary /bin/sh -c /opt/sos-berlin.com/js7/joc/install/joc_install_tables.sh
docker compose restart js7-joc-primary
参考 docker-compose.yml ver 2.5.1まで
ver 2.5.2 より、controller, agentのvolume指定パスが変更となったため、念のため ver 2.5.1 までのファイルもしばらく残します。
version: '3'
services:
db:
image: mysql:8.0
command: --default-authentication-plugin=mysql_native_password
volumes:
- db_data:/var/lib/mysql
networks:
- js7network
environment:
MYSQL_ROOT_PASSWORD: iLoveMySQL8.0!
MYSQL_DATABASE: js7db
MYSQL_USER: js7user
MYSQL_PASSWORD: js7password
restart: "no"
js7-joc-primary:
depends_on:
- db
image: sosberlin/js7:joc-${JS7VERSION}
hostname: js7-joc-primary
ports:
- "4446:4446"
volumes:
- js7-joc-primary-config:/var/sos-berlin.com/js7/joc/resources/joc
- js7-joc-primary-logs:/var/log/sos-berlin.com/js7/joc
networks:
- js7network
environment:
RUN_JS_JAVA_OPTIONS: -Xmx256m
RUN_JS_USER_ID: "${JS7USERID}:${JS7GROUPID}"
restart: "no"
js7-controller-primary:
image: sosberlin/js7:controller-${JS7VERSION}
hostname: js7-controller-primary
volumes:
- js7-controller-primary:/var/sos-berlin.com/js7/controller/var
networks:
- js7network
environment:
RUN_JS_JAVA_OPTIONS: -Xmx256m
RUN_JS_USER_ID: "${JS7USERID}:${JS7GROUPID}"
restart: "no"
js7-agent-primary:
image: sosberlin/js7:agent-${JS7VERSION}
hostname: js7-agent-primary
volumes:
- js7-agent-primary:/var/sos-berlin.com/js7/agent/var_4445
networks:
- js7network
environment:
RUN_JS_JAVA_OPTIONS: -Xmx256m
RUN_JS_USER_ID: "${JS7USERID}:${JS7GROUPID}"
restart: "no"
volumes:
db_data:
driver: local
driver_opts:
type: none
device: ${PWD}/db_data
o: bind
js7-joc-primary-config:
driver: local
driver_opts:
type: none
device: ${PWD}/js7-joc-primary-config
o: bind
js7-joc-primary-logs:
driver: local
driver_opts:
type: none
device: ${PWD}/js7-joc-primary-logs
o: bind
js7-controller-primary:
driver: local
driver_opts:
type: none
device: ${PWD}/js7-controller-primary
o: bind
js7-agent-primary:
driver: local
driver_opts:
type: none
device: ${PWD}/js7-agent-primary
o: bind
networks:
js7network:
参考 MySQL 8.0 mysql_native_password 利用時の設定方法
本記事では、以前はmysql_native_passwordで記載していましたので、そちらを利用する場合の設定も残します。
※MySQL 8.0.34 以降で、認証Plugin mysql_native_password 利用時にログに警告が出るようになりました。いずれ廃止される見込みです。
# default-authentication-pluginをmysql_native_passwordに変更
db:
image: mysql:8.0
ports:
- "3306:3306"
command:
- - --default-authentication-plugin=caching_sha2_password
+ - --default-authentication-plugin=mysql_native_password
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_bin
- --skip-character-set-client-handshake
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">org.mariadb.jdbc.Driver</property>
<property name="hibernate.connection.password">js7password</property>
- <property name="hibernate.connection.url">jdbc:mariadb://db:3306/js7db?allowPublicKeyRetrieval=true&useSSL=false</property>
+ <property name="hibernate.connection.url">jdbc:mariadb://db:3306/js7db</property>
<property name="hibernate.connection.username">js7user</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
<property name="hibernate.show_sql">false</property>
<property name="hibernate.connection.autocommit">false</property>
<property name="hibernate.format_sql">true</property>
<property name="hibernate.temp.use_jdbc_metadata_defaults">false</property>
<property name="hibernate.connection.provider_class">org.hibernate.hikaricp.internal.HikariCPConnectionProvider</property>
<property name="hibernate.hikari.maximumPoolSize">10</property>
</session-factory>
</hibernate-configuration>