Skip to main content
Skip table of contents

FEED installation

The FEED application serves as a highly customizable gateway, designed to streamline and enhance the workflow between the modalities and the PACS system.
It supports a wide range of use cases, including various scripts capable of executing numerous operations.
The application also features an AI modules section to integrate AI analytics endpoints. Additionally, it can manipulate data received from modalities before forwarding it to the PACS, among other functions.

Requirements

Server-side requirements

Operating system

The application can run on any 64-bit Linux OS compatible with Docker Engine.

The recommended Linux operating systems are:

  • Ubuntu 22.04 LTS or 24.04 LTS

  • RHEL-based OS

Minimal hardware requirements

CPU cores*

RAM

8 cores

16 GB

* Equivalent of 7th generation Intel i5 2.4 GHz CPU core.

The storage is used for software and temporary data cache. At least 50 GB of storage size is recommended. If the FEED system is to be used as a temporary data cache, the storage size should be evaluated according to the retention policies.

Since the network bandwidth directly affects opening speed, we recommend at least 100 Mbit/s.

Installation

Installation prerequisites

The installation requires Docker Engine installed on the operating system. For instructions on how to install Docker Engine see the official website: Install Docker Engine.

Ensure to install all the packages, including docker-compose.

Installation procedure

Docker login

The ready-to-use Docker image of the system is available in the shared repository europe-west1-docker.pkg.dev/o3-cloud-internal/partner.

To authenticate to the repository, a Service account key will be provided via e-mail as a JSON file.

Copy the file on the target machine and execute the following command, by replacing the parameter KEY-FILE with the path to the provided JSON file:

CODE
cat {KEY-FILE} | sudo docker login -u _json_key --password-stdin europe-west1-docker.pkg.dev

Environment setup

After the Docker login, it's advisable to create an environment file and a docker-compose.yml file.

This facilitates easier control and deployment of the container. Alongside the YAML file, we recommend using an environment file to store variables that the docker-compose files will utilize. This approach allows for convenient modification of variable values in the environment file, which will automatically be reflected in the YAML files, as they can be configured to read from this environment file.

The environment file should be located in the same directory as the docker-compose.yml, and its name should start with a dot. Typically, we name it .env.

.env file

Below is an example of a .env file that can be used for FEED installation. Please replace the value of the following variables with the appropriate one:

  • COMPOSE_FILE: specify which docker-compose files should be read from this environment file.

  • STORAGE: specify the path where the integrated storage will store all the DICOM files and images. Create the directory if it is not already present.

  • PATHDC: specify where the docker-compose.yml file and the .env file are located.

  • DB_IMAGE: specify the MySQL image to use. We also support MySQL 5.7, but we highly recommend using MySQL 8.0.

  • DB_PASSWORD: specify the password for the DB 'root' user.

  • TIMEZONE: specify the local timezone.

  • FEED_IMAGE: at the end of the line, instead of {X.Y.Z} fill in the designated FEED image.

System versions

The proper version of the FEED image will be provided by your O3 Enterprise contact. Alternatively, it can be requested by contacting partner@o3enterprise.com.

CODE
## This is an example of the enviroment file to store all the variables used by the docker-compose.yml and by the applications.
COMPOSE_FILE=docker-compose.yml     ## Specify which docker-compose files should be read from this environment file. 
STORAGE={pathToStorage}            ## Path where the integrated storage will store all the DICOM files and images. Create the directory if not already present.
PATHDC={pathToDocker-ComposeFiles}  ## Location of the docker-compose.yml file and the .env file.
DB_IMAGE=mysql:8.0.34               ## MySQL image to use. We support also MySQL 5.7, but we highly recommend using MySQL 8.0.
DB_PASSWORD={dbPassword}            ## Password for the DB 'root' user.
TIMEZONE={timezone}                 ## Local timezone.

FEED_IMAGE=europe-west1-docker.pkg.dev/o3-cloud-internal/partner/feed:{X.Y.Z}  ## Replace {X.Y.Z} with the proper version of the FEED system.

## The next line is a configuration option for MySQL database. Here is possible to define preferences for the data storage.
VARMYSQL=--sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION,ALLOW_INVALID_DATES" --character_set_server=utf8 --collation_server=utf8_general_ci

## The lines below are the connection strings the application will use to connect to the database ('db' is the name of the container defined in the YAML file).
FEED_CONNECTION_STRING=dataSourceClassName=com.mysql.cj.jdbc.MysqlDataSource;dataSource.url=jdbc:mysql://db:3306/feed;dataSource.user=root;dataSource.password=${DB_PASSWORD}
docker-compose.yml file

Below is a ready-to-use example of a docker-compose.yml file that can be used for FEED installation. In it, every value that begins with a $ represents a variable stored in the environment file (no modifications are necessary).

CODE
version: '3.2'
services:
  db:
    image: ${DB_IMAGE}
    container_name: db
    restart: always
    env_file:
      - .env
    volumes:
      - "${STORAGE}/compose/db:/var/lib/mysql:rw"
    environment:
      - "MYSQL_ROOT_PASSWORD=${DB_PASSWORD}"
      - TZ=${TIMEZONE}
    command: mysqld ${VARMYSQL}
    healthcheck:
        test: ["CMD", "mysql", "-h", "db", "-u", "root", "-p${DB_PASSWORD}"]
        interval: 2s
        timeout: 10s
        retries: 5
    ports:
      - "3306:3306"
    ulimits:
      nproc: 65535
      nofile:
        soft: 26677
        hard: 46677
    networks:
      - o3net
      
  feed:
    image: ${FEED_IMAGE}
    container_name: feed
    restart: always
    env_file:
      - .env
    volumes:
      - ${STORAGE}/compose/storage:/opt/storageFeed
      - ${STORAGE}/compose/feed/log:/opt/feed/log
      - ${STORAGE}/compose/feed/persist:/opt/feed/persist
      - ${STORAGE}/compose/shared/iso:/shared/iso
    ports:
      - 9191:9191
      - 2356:2356
      - 4568:4568
    environment:
      - TZ=${TIMEZONE}
      - LOG_TO=FILE
      - FEED_CONNECTION_STRING=${FEED_CONNECTION_STRING}
    depends_on:
      db:
        condition: service_healthy
    networks:
      - o3net
      
networks:
  o3net:
    driver: bridge
    ipam:
      driver: default
      config:
      - subnet: 172.16.1.0/24

Once both files are finalized and ready, execute the following command within the directory where these files are located to start the database container:

CODE
sudo docker compose up -d db

Once the image is pulled from the repository and the container is running, execute the command that creates the FEED schema:

CODE
sudo docker exec db mysql -u root -p${DB_PASSWORD} -e "create schema feed";

If this process completes without any errors, the database should be ready for connections.

After the schema creation, it is possible to start all the other containers by executing the following command:

CODE
sudo docker compose up -d

Provided that all steps were executed correctly and the configuration is accurate, the container should start, and the application will run.

To access the application's interface and configure the system, see FEED configuration.

Logs

If the containers aren't active or if the application interface is inaccessible, it indicates an issue has occurred.

To diagnose the problem, you can consult and analyze specific files found in the /{pathToStorage}/feed/log directory, as defined in the volumes part of the YAML file.

Alternatively, the docker logs -f feed command can be used to check the logs and gain insights into what might have gone wrong.

Updates

To update the application’s version simply substitute in the .env file the tag of the FEED_IMAGEvariable with the new one and execute the following command:

CODE
sudo docker compose up -d 

Tip

To reduce the downtime of the application we suggest first pulling the image from the shared repository and then modifying the .env file.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.