Introduction
The JS7 - Controller Installation for Docker Containers article explains start-up of a JOC Cockpit container using the Docker® Run command.
The following examples apply for users who wish to start containers using the docker-compose utility. Consider that examples have to be adjusted to individual environments.
Examples are contributed by the Japanese JS7 Community. Find the complete instructions from the Start with JS7 JobScheduler docker-compose (PostgreSQL version) article.
Preparation
Docker Compose Configuration: docker-compose.yaml
Download: docker-compose.yml
version: '3'
services:
db:
image: postgres:14-alpine
volumes:
- db_data: /var/lib/postgresql/data
ports:
- "5432:5432"
networks:
- js7
environment:
POSTGRES_INITDB_ARGS: "--encoding=UTF-8 --locale=en_US.UTF-8"
POSTGRES_USER: js7user
POSTGRES_PASSWORD: js7password
POSTGRES_DB: js7db
restart: "no"
js7-joc-primary:
depends_on:
- db
container_name: js7-joc-primary
image: sosberlin/js7:joc-${JS7VERSION}
hostname: js7-joc-primary
ports:
- "17446:4446"
networks:
- js7
volumes:
- js7-joc-primary-config:/var/sos-berlin.com/js7/joc/resources/joc
- js7-joc-primary-logs:/var/sos-berlin.com/js7/joc/logs
environment:
RUN_JS_JAVA_OPTIONS: -Xmx256m
RUN_JS_USER_ID: "${JS7USERID}:${JS7GROUPID}"
restart: "no"
networks:
js7:
external: true
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
Hibernate Configuration: hibernate.cfg.xml
Download: hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <hibernate-configuration> <session-factory> <property name="hibernate.connection.driver_class">org.postgresql.Driver</property> <property name="hibernate.connection.password">js7password</property> <property name="hibernate.connection.url">jdbc:postgresql://db:5432/js7db</property> <property name="hibernate.connection.username">js7user</property> <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</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>
Environment Variables used with the Examples
echo -e "JS7USERID=$(id -u)\nJS7GROUPID=$(id -g)\nJS7VERSION=2-3-2" > .env # check environment variables cat .env JS7USERID=1000 JS7GROUPID=1000 JS7VERSION=2-3-2
Directories used with the Examples
mkdir db_data mkdir js7-agent-primary mkdir js7-controller-primary mkdir js7-joc-primary-config mkdir js7-joc-primary-logs
Directory Hierarchy
. ├── .env ├── db_data ├── docker-compose.yml ├── hibernate.cfg.xml ├── js7-agent-primary ├── js7-controller-primary ├── js7-joc-primary-config └── js7-joc-primary-logs
Container Start-up
Start Container
docker-compose up -d # check containers $ docker-compose ps NAME COMMAND SERVICE STATUS PORTS js74-db-1 "docker-entrypoint.s…" db running 0.0.0.0:5413->5432/tcp, :::5413->5432/tcp js74-js7-joc-primary-1 "sh /usr/local/bin/e…" js7-joc-primary running 0.0.0.0:4446->4446/tcp, :::4446->4446/tcp
Copy Hibernate Configuration to Container
cp -f hibernate.cfg.xml js7-joc-primary-config/
Create Database Objects from Container
docker-compose exec js7-joc-primary /bin/sh -c /opt/sos-berlin.com/js7/joc/install/joc_install_tables.sh # check installation log file tail js7-joc-primary-logs/install-result.log
Restart Container
# restart container docker-compose restart js7-joc-primary
Initial Operation
See JS7 - JOC Cockpit Installation for Docker Containers, section: Initial Operation