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.
...
yml
Download: docker-compose.yamlyml
Code Block |
---|
language | yml |
---|
title | Example for use of Docker Compose with PostgreSQL |
---|
|
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 |
Explanation:
- Use of volumes: There are a number of ways how to mount or bind volumes into a container.
- One strategy is to mount a Docker® volume that is managed by Docker® typically in
/var/lib/docker/volumes
. - Another strategy is to map Docker® volumes to the local file system. This requires to let Docker® Compose know that the volume is locally managed. This is what the above example is focused on.
- Use of user accounts: see JS7 - Running Containers for User Accounts.
- The
RUN_JS_USER_ID
setting holds the User ID and Group ID. Consider that the Group ID has to be 0 as directories and files in the image are owned by the root group.
Hibernate Configuration: hibernate.cfg.xml
Download: hibernate.cfg.xml
Code Block |
---|
language | xml |
---|
title | Example of hibernate.cfg.xml for PostgreSQL |
---|
|
<?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
Code Block |
---|
language | bash |
---|
title | Environment Variables used with the Examples |
---|
|
echo -e "JS7USERID=$(id -u)\nJS7GROUPID=$(id -g)\nJS7VERSION=2-5-0" > .env
# check environment variables
cat .env
JS7USERID=1000
JS7GROUPID=0
JS7VERSION=2-5-0 |
Directories used with the Examples
Code Block |
---|
language | bash |
---|
title | Directories used with the Examples |
---|
|
mkdir db_data
mkdir js7-joc-primary-config
mkdir js7-joc-primary-logs |
Directory Hierarchy
Code Block |
---|
language | bash |
---|
title | Directories used with the Examples |
---|
|
.
├── .env
├── db_data
├── docker-compose.yml
├── hibernate.cfg.xml
├── js7-joc-primary-config
└── js7-joc-primary-logs |
Container Start-up
Start Container
Code Block |
---|
language | bash |
---|
title | Example how to start up Containers |
---|
|
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
Code Block |
---|
language | bash |
---|
title | Example how to copy hibernate.cfg.xml to the Container |
---|
|
cp -f hibernate.cfg.xml js7-joc-primary-config/ |
Create Database Objects from Container
Code Block |
---|
language | bash |
---|
title | Example how to copy hibernate.cfg.xml to the 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
Code Block |
---|
language | bash |
---|
title | Example how to restart the Container |
---|
|
# restart container
docker-compose restart js7-joc-primary |
Initial Operation
See JS7 - JOC Cockpit Installation for Docker Containers, section: Initial Operation.