fdcastel / firebird-docker

Docker images for Firebird Database
4 stars 1 forks source link

firebird-docker

Docker images for Firebird Database.

Quick reference

Supported tags

ghcr.io/fdcastel/firebird Dockerfile OS Last modified
5, 5-bookworm, bookworm, latest Dockerfile Debian 12.5 2024-06-15
5-jammy, jammy Dockerfile Ubuntu 22.04 2024-06-15
4, 4-bookworm Dockerfile Debian 12.5 2024-06-15
4-jammy Dockerfile Ubuntu 22.04 2024-06-15
3, 3-bookworm Dockerfile Debian 12.5 2024-06-15
3-jammy Dockerfile Ubuntu 22.04 2024-06-15

How to use this image

Image defaults:

Start a Firebird server instance

docker run \
    -e FIREBIRD_ROOT_PASSWORD=************ \
    -e FIREBIRD_USER=alice \
    -e FIREBIRD_PASSWORD=************ \
    -e FIREBIRD_DATABASE=mirror.fdb \
    -e FIREBIRD_DATABASE_DEFAULT_CHARSET=UTF8 \
    -v ./data:/run/firebird/data
    --detach ghcr.io/fdcastel/firebird

Using Docker Compose

services:
  firebird:
    image: ghcr.io/fdcastel/firebird
    restart: always
    environment:
      - FIREBIRD_ROOT_PASSWORD=************
      - FIREBIRD_USER=alice
      - FIREBIRD_PASSWORD=************
      - FIREBIRD_DATABASE=mirror.fdb
      - FIREBIRD_DATABASE_DEFAULT_CHARSET=UTF8
    volumes:
      - ./data:/run/firebird/data

Connect to an existing instance using isql

docker run -it --rm ghcr.io/fdcastel/firebird isql -u SYSDBA -p ************ SERVER:/path/to/file.fdb

Environment variables

The following environment variables can be used to customize the container.

FIREBIRD_ROOT_PASSWORD

If present sets the password for SYSDBA user.

If not present a random password will be generated and stored into /opt/firebird/SYSDBA.password.

FIREBIRD_USER

Creates an user in Firebird security database.

You must inform a password in FIREBIRD_PASSWORD variable. Otherwise the container initialization will fail.

FIREBIRD_DATABASE

Creates a new database. Ignored if the database already exists.

Database location is /run/firebird/data. Absolute paths (outside this folder) are allowed.

You may use FIREBIRD_DATABASE_PAGE_SIZE to set the database page size. And FIREBIRD_DATABASE_DEFAULT_CHARSET to set the default character set.

FIREBIRD_USE_LEGACY_AUTH

Enables legacy authentication (not recommended).

FIREBIRD_CONF_*

Any variable starting with FIREBIRD_CONF_ can be used to set values in Firebird configuration file (firebird.conf).

E.g. You can use FIREBIRD_CONF_DataTypeCompatibility=3.0 to set the value of key DataTypeCompatibility to 3.0 in firebird.conf.

Please note that keys are case sensitive. And any key not present in firebird.conf will be ignored.

*_FILE

Any of the previously listed environment variables may be loaded from file by appending the _FILE suffix to the variable name.

E.g. FIREBIRD_PASSWORD_FILE=/run/secrets/firebird-passwd will load FIREBIRD_PASSWORD with the content from /run/secrets/firebird-passwd file.

Note that both the original variable and its _FILE variant are mutually exclusive. Trying to use both will cause the container initialization to fail.

Initializing the database contents

When creating a new database with FIREBIRD_DATABASE environment variable you can initialize it running one or more shell or SQL scripts.

Any file with extensions .sh, .sql, .sql.gz, .sql.xz and .sql.zst found in /docker-entrypoint-initdb.d/ will be executed in alphabetical order. .sh files without file execute permission (+x) will be sourced rather than executed.

IMPORTANT: Scripts will only run if you start the container with a data directory that is empty. Any pre-existing database will be left untouched on container startup.

Setting container time zone

The container runs in the UTC time zone by default. To change this, you can set the TZ environment variable:

    environment:
      - TZ=America/New_York

Alternatively, you can use the same time zone as your host system by mapping the /etc/localtime and /etc/timezone system files:

    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /etc/timezone:/etc/timezone:ro

Development notes

Prerequisites

Build

To generate the source files and build each image from assets.json configuration file, run:

Invoke-Build

You can then check all created images with:

docker image ls ghcr.io/fdcastel/firebird

Tests

To run the test suite for each image, use:

Invoke-Build Test