GithubHelp home page GithubHelp logo

firebird-docker's Introduction

docker Firebird

Supported tags and respective Dockerfile links

2.5-sc, v2.5.9-sc (2.5-sc/Dockerfile)

2.5-ss, v2.5.9-ss (2.5-ss/Dockerfile)

3.0, v3.0, v3.0.10 (Dockerfile)

v4.0, v4.0.1, latest (Dockerfile)

What's New

Firebird 4.0.2 sub-release is available

Firebird Project is happy to announce general availability of Firebird 4.0.2 — the second point release in the Firebird 4.0 series.

This sub-release offers many bug fixes and also adds a few improvements, please refer to the Release Notes for the full list of changes. Binary kits for Windows, Linux and Android platforms are immediately available for download.

Firebird 3.0.10 sub-release is available

Firebird Project is happy to announce general availability of Firebird 3.0.10 — the latest point release in the Firebird 3.0 series.

This sub-release offers many bug fixes and also adds a few improvements, please refer to the Release Notes for the full list of changes. Binary kits for Windows, Linux and Android platforms are immediately available for download, packages for Mac OS will follow shortly.

Automatic restore of backups in /firebird/restore

This image will now check for any backups in /firebird/restore ending in the file extension .fbk and attempt to restore them to the same filename but with the extension .fdb in /firebird/data. It will only attempt to restore backups if the equivalent .fdb does not already exist in /firebird/data. For more details on this feature please see the /firebird/restore volume description

Firebird 3.0.9 sub-release is available

Firebird Project is happy to announce general availability of Firebird 3.0.9 — the latest point release in the Firebird 3.0 series.

This sub-release offers a few important bugfixes, please refer to the Release Notes for the full list of changes. Binary kits for Windows, Linux and Android platforms are immediately available for download, packages for Mac OS will follow shortly.

Firebird Project is happy to announce general availability of Firebird 4.0.1 — the first point release in the Firebird 4.0 series.

This sub-release offers many bug fixes and also adds a few improvements, please refer to the Release Notes for the full list of changes. Binary kits for Windows, Linux and Android platforms are immediately available for download.

Firebird 3.0.8 sub-release is available

Firebird Project is happy to announce general availability of Firebird 3.0.8 — the latest point release in the Firebird 3.0 series.

This sub-release offers many bug fixes and also adds a few improvements, please refer to the Release Notes for the full list of changes. Binary kits for Windows, Linux, Mac OS and Android platforms are immediately available for download.

Base image is now on bullseye for 2.5-ss, 2.5-sc, 3.0 and 4.0 branches

This required a script to replace the libicu supplied by bullseye with the preferred one for the relevant firebird versions. If for some reason you do get a Collation unicode for character set utf8 is not installed error you can use gfix -icu <database> to correct the issue as of firebird 3.0.

Both 2.5 branches are now included as well. Unfortunately the gfix -icu <database> option is not available for 2.5 so instead I have opted to add tags for v2.5.9-sc-jessie and v2.5.9-ss-jessie. If you find your setup works with the jessie tags but not the newer v2.5.9-sc or v2.5.9-ss tags please switch back to the jessie tags and open an issue to let me know. This will probably be the last major update for v2.5 as version 2.5 has been discontinued for 2 years now.

Firebird Project is happy to announce general availability of Firebird 4.0 — the latest major release of the Firebird relational database.

Firebird 4.0 introduces new data types and many improvements without radical changes in architecture or operation, the most important are:

  • Built-in logical replication;
  • Extended length of metadata identifiers (up to 63 characters);
  • New INT128 and DECFLOAT data types, longer precision for NUMERIC/DECIMAL data types;
  • Support for international time zones;
  • Configurable time-outs for connections and statements;
  • Pooling of external connections;
  • Batch operations in the API;
  • Built-in cryptographic functions;
  • New ODS (version 13) with new system and monitoring tables;
  • Maximum page size increased to 32KB.

Please refer to the Release Notes for the full list of changes. The complete Language Reference is also available.

Binary kits for Windows, Linux and Android platforms (both 32-bit and 64-bit) are immediately available for download.

3.0.7 Sub Release

Firebird Project is happy to announce general availability of Firebird 3.0.7 — the latest point release in the Firebird 3.0 series.

This sub-release offers many bug fixes and also adds a few improvements, please refer to the Release Notes for the full list of changes. Binary kits for Windows, Linux, Mac OS and Android platforms are immediately available for download.

All users of Firebird v3.0.6 are strongly encouraged to upgrade to v3.0.7 as soon as possible due to several serious bugs found in v3.0.6 and fixed in this point release.

2.5.9 Sub Release

The Firebird Project is happy to announce the general availability of Firebird 2.5.9 — the latest minor release in the Firebird 2.5 series.

This sub-release introduces several bug fixes and a few improvements, please refer to the Release Notes for the full list of changes. Binary kits for Windows, Linux and MacOS X (both 32-bit and 64-bit) are immediately available for download.

Also, in accordance with its release lifetime policy, the Firebird Project advises that the Firebird v2.5 series has reached its end-of-life and thus will not be maintained further. Once Firebird 4.0 is released, this last official release in the v.2.5 series, Firebird 2.5.9, will be moved to the "Discontinued Versions" section of the download area.

Default password for sysdba

The default password for sysdba is randomly generated when you first launch the container, look in the docker log for your container or check /firebird/etc/SYSDBA.password. Alternatively you may pass the environment variable ISC_PASSWORD to set the default password.

Update policy

Stable releases

I will maintain current versions of Stable firebird releases. Each version of the stable branches will recieve a tag on both github and docker that will be semi permanent. The latest tagged versions will periodically be deleted and remade if a new feature for the image is created. Tags other than the latest release will not be updated as image specific features are implemented

3.0

Any new image features will be developed on the 3.0 releases

2.5

The 2.5 series was eol'd by the firebird guys as of the 2.5.9 release. I do not anticipate any further updates to the 2.5 images.

Development policy

4.0 has finally entered beta and along with it has some pretty major changes including ODS changes requiring a complete backup and restore to upgrade. Because of this I am taking the opportunity to update the underlying debian image to debian buster. Currently the image builds but I have not tested using it yet. In the coming months I will start making it usable. I hope to have the 4.0 image usable by the time the official sources are at release candidate status.

Description

This is a Firebird SQL Database container.

Default Login information

Username: SYSDBA Password is either set by ISC_PASSWORD or randomized

Environment Variables:

TZ

TimeZone. (i.e. America/Chicago)

ISC_PASSWORD

Default sysdba user password, if left blank a random 20 character password will be set instead. The password used will be placed in /firebird/etc/SYSDBA.password. If a random password is generated then it will be in the log for the container.

FIREBIRD_DATABASE

If this is set then a database will be created with this name under the /firebird/data volume with the 'UTF8' default character set and if FIREBIRD_USER is also set then FIREBIRD_USER will be given ownership.

FIREBIRD_USER

This user will be created and given ownership of FIREBIRD_DATABASE. This variable is only used if FIREBIRD_DATABASE is also set.

FIREBIRD_PASSWORD

The password for FIREBIRD_USER, if left blank a random 20 character password will be set instead. If a random password is generated then it will be in the log for the container.

EnableLegacyClientAuth

If this is set to true then when launching without an existing /firebird/etc folder this will cause the newly created firebird.conf to have the following defaults:

AuthServer = Legacy_Auth, Srp, Win_Sspi 
AuthClient = Legacy_Auth, Srp, Win_Sspi 
UserManager = Legacy_UserManager, Srp 
WireCrypt = enabled 

This will allow legacy clients to connect and authenticate.

DataTypeCompatibility

If this is set then when launching without an existing /firebird/etc folder this will cause the newly created firebird.conf to set DataTypeCompatibility with the defined value supported by Firebird.

# ----------------------------
# Engine currently provides a number of new datatypes unknown to legacy clients.
# In order to simplify use of old applications set this parameter to minor FB
# version datatype compatibility with which you need. Currently two values are
# supported: 3.0 & 2.5.
# More precise (including per-session) tuning is possible via SQL and DPB.
#
# Per-database configurable.
#
#    Type: string
#
#DataTypeCompatibility =

EnableWireCrypt

If this is set to true then when launching without an existing /firebird/etc folder this will cause the newly created firebird.conf to have WireCrypt = enabled to allow compatibility with Jaybird 3

<VARIABLE>_FILE

If set to the path to a file then the named variable minus the _FILE portion will contain the contents of that file. This is useful for using docker secrets to manage your password. This applies to all variables except TZ

Server Architectures

At the moment only the "Super Classic" and "Super Server" architectures are available.

SC

Super Classic.

SS

Super Server.

CS

Classic Server.

Volumes:

/firebird

This single volume supercedes all of the old volumes with most of the old volumes existing as subdirectories under /firebird

/firebird/data

Default location to put database files

/firebird/restore

Any .fbk files located in here that do not have a matching .fdb file under /firebird/data will automatically be restored via gbak to /firebird/data on container start. The function that handles restoration starts by looking for /firebird/etc/SYSDBA.password if the file doesn't exist then no restoration attempts will be made. If that file exists then it will check for a .env file matching the .fbk file in /firebird/restore and attempt to load RESTORE_USER and RESTORE_PASSWORD from that file but will fall back to ISC_USER and ISC_PASSWORD from /firebird/etc/SYSDBA.password if those values do not exist in the .env file or the .env file is missing.

So for example if you have /firebird/restore/database.fbk the script will first check if /firebird/etc/SYSDBA.password exists and fail if it doesn't. It will then check if /firebird/data/database.fdb exists. If that file does not exist the script will then attempt to restore /firebird/restore/database.fbk to /firebird/data/database.fdb using either RESTORE_USER and RESTORE_PASSWORD from /firebird/restore/database.env or if that file does not exist it will use ISC_USER and ISC_PASSWORD from /firebird/etc/SYSDBA.password.

/firebird/system

security database DIR

/firebird/etc

config files DIR message files DIR

/firebird/log

log files DIR

Read Only root filesystem

For some users they may prefer to run the filesystem in read only mode for additional security. These volumes would need to be created rw in order to do this.

/var/firebird/run

This volume does not actually exist by default but you may want to create it if you wish to use a read only root filesystem guardian lock DIR

/tmp

This volume does not actually exist by default but you may want to create it if you wish to use a read only root filesystem Database lock directory

Exposes:

3050/tcp

Health Check0

I have now added HEALTHCHECK support to the image. By default it uses nc to check port 3050. If you would like it to perform a more thorough check then you can create /firebird/etc/docker-healthcheck.conf If you add HC_USER HC_PASS and HC_DB to that file then the healthcheck will attempt a simple query against the specified database to determine server status.

Example docker-healthcheck.conf:

HC_USER=SYSDBA
HC_PASS=masterkey
HC_DB=employee.fdb

Events

Please note for events to work properly you must either configure RemoteAuxPort and forward it with -p using a direct mapping where both sides internal and external use the same port or use --net=host to allow the random port mapping to work. see: http://www.firebirdfaq.org/faq53/ for more information on event port mapping.

firebird-docker's People

Contributors

arvanus avatar barboni avatar dependabot[bot] avatar jacobalberty avatar kostyanx avatar mariuz avatar mrotteveel avatar scebotari66 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

firebird-docker's Issues

How to change/set the default firebird.conf file automatically.

Hi all,

For certain cases of my firebird container. We need some of them running in different port. This can be accomplished with changing the firebird.conf.

However. Even after I do a docker commit on the container instance where I have changed the firebird.conf, initializing a new container based on the new image commit still result in the same old, original version of firebird.conf. Is there any way that it can be changed? Personally, I think it is related to the docker-entrypoint.sh file.

Any help would be greatly appreciated!

Cheers,

Help needed unraid docker

I'm trying to deploy firebird 3.0 on docker - unraid server.
Is there any information on how to install it in unraid?
Any help is apritiated

Firebird database commands to connect

How can I get into the Firebird database command line to show databases and run commands similar to SQL. I have tried multiple commands with no luck. Thank you in advance.

Run as non-root?

Hi

I'm not able to run images that require root access in my environment. Is there a way to run this as non-root?

Thanks

Jenkins pipeline: the container started but didn't run the expected command.

When I use the jacobalberty/firebird:3.0.6 image on my Jenkins server, I get an error

The command is:

$ docker run -t -d -u 1001:1001 --link a26ac42ec9c72169b7498c6186d72bfaa70751447b9a32882b02557247df7f68:db -w /home/jenkins/workspace/iubar-firebird-sidecar-hello  -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ********  jacobalberty/firebird:3.0.6 cat

(please note the "cat" command at the end, which is added by Jenkins)

The error is:

$ docker top ce3f07d8bd10e9dd94c3cf7fe86e5e31257398d41e45f2cf5ad2060050a3bd5e -eo pid,comm
ERROR: The container started but didn't run the expected command. Please double check your ENTRYPOINT does execute the command passed as docker run argument, as required by official docker images (see https://github.com/docker-library/official-images#consistency for entrypoint consistency requirements).
Alternatively you can force image entrypoint to be disabled by adding option `--entrypoint=''`.

If I exchange the jacobalberty/firebird:3.0.6 image with the mysql:5 image, I get no errors.

Any advice ?

2.5-ss Won't Start

I managed to get 3.0 and 2.5-sc to work (see examples here), but 2.5-ss won't start:

> docker run --name fb -d -e ISC_PASSWORD=nix -e FIREBIRD_DATABASE=test.db -p 3050:3050 jacobalberty/firebird:2.5-ss    
e1eaa8952f7fb3279a06d1bbe97c18b80c4ab1798cdcf3f663ab8348f15156f8

> docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

> docker logs fb
Use CONNECT or CREATE DATABASE to specify a database
Statement failed, SQLSTATE = 28000
Your user name and password are not defined. Ask your database administrator to set up a Firebird login.
Use CONNECT or CREATE DATABASE to specify a database

Something need to be changed with the entry point script, maybe?

Default password error

Hi there!

I get an error message when trying to connect to the Firebird 2.5 server. I’m trying to change the default password..
I’m not sure if I can make this clear, but I’ll try:

The error:
I set the password via “ISC_PASSWORD='masterkey'” environment in the run command. When I try to run the container, the password is not changed to the value I’ve set in the run command.

This is my container run command:

docker run -d --restart=always
--name FB2-Develop
-p 3052:3050
-p 33052:33052
-v /var/containersdata/firebird2/data/:/firebird/data/
-v /var/containersdata/firebird2/etc/:/firebird/etc/
-e TZ='Europe/Budapest'
-e ISC_PASSWORD='masterkey'
jacobalberty/firebird:2.5-sc

Error message:

“Your user name and password are not defined. Ask your database administrator to set up a Firebird login.”

Later, I found out that the default password is in use, not mine.
( “9yd3vRy0” from /usr/local/firebird/skel/etc/SYSDBA.password file )
SYSDBA.password file is not created.

Container logs:

Warning - maximum 8 significant bytes of password used
use gsec -? to get help
Your user name and password are not defined. Ask your database administrator to set up a Firebird login.
unable to open database

When I delete SYSDBA.password file, and run docker image:
Container logs:

root@develop:~# docker logs FB2-Develop
/usr/local/firebird/docker-entrypoint.sh: line 65: /firebird/etc/SYSDBA.password: No such file or directory
Warning - maximum 8 significant bytes of password used
use gsec -? to get help
Your user name and password are not defined. Ask your database administrator to set up a Firebird login.
unable to open database

Workaround

So before the first time (0.event) when I run the container, I have to copy the SYSDBA.password file from the skeleton directory in the firebird docker image, to the mapped directory (outside the docker) to make it work. After I start the container, it’s working fine, the file is changed to the new password which I’ve defined.
This method is not permanent, since if You guys update this docker image, I have to extract the SYSDBA.password file again.

In Container

> root@5d26cf9d2e54:/# cat /usr/local/firebird/skel/etc/SYSDBA.password
> # Firebird generated password for user SYSDBA is:
> 
> ISC_USER=sysdba
> ISC_PASSWD=se1wHxZY
> 
> # generated on afc972672d14 at time Tue Mar 27 22:48:09 UTC 2018
> 
> # Your password can be changed to a more suitable one using the
> # /usr/local/firebird/bin/gsec utility.
> 
> rm /firebird/etc/SYSDBA.password
> cp /usr/local/firebird/skel/etc/SYSDBA.password /firebird/etc/
> 
> root@01e90334b15b:/# ls -al /firebird/etc/
> total 300
> drwxrwxrwx 3 root root   4096 Jul 29 13:20 .
> drwxr-xr-x 6 root root   4096 Jul 29 13:18 ..
> -r--r--r-- 1 root root  26023 Jul  2 20:49 IDPLicense.txt
> -r--r--r-- 1 root root  24301 Jul  2 20:49 IPLicense.txt
> -rw-r--r-- 1 root root	687 Jul  2 20:49 README
> -r-------- 1 root root	258 Jul 29 13:20 SYSDBA.password
> -rw-r--r-- 1 root root 190594 Jul  2 20:49 WhatsNew
> -rw-r--r-- 1 root root	275 Jul  2 20:49 aliases.conf
> -rw-r--r-- 1 root root   5464 Jul  2 20:49 fbtrace.conf
> -rw-r--r-- 1 root root  26921 Jul  2 21:25 firebird.conf
> drwxrwxrwx 2 root root   4096 Jul 26 16:31 h
> 
> root@01e90334b15b:/# exit

On host

root@develop:~# docker stop FB2-Develop
FB2-Develop
root@develop:~# docker rm FB2-Develop
FB2-Develop

root@develop:~# ./fb2_run-container
79be48605908a77d6cf4533363adedeb33f72ffa611312e16e7ab7d09b0e2357

root@develop:~# cat /var/containersdata/firebird2/etc/SYSDBA.password
# Firebird generated password for user SYSDBA is:

ISC_USER=SYSDBA
ISC_PASSWD=masterkey
# Your password can be changed to a more suitable one using the
# /usr/local/firebird/bin/gsec utility.

# Set for interop with 3.0
ISC_PASSWORD=masterkey

root@develop:~# ls -al /var/containersdata/firebird2/etc/
total 300
drwxrwxrwx 3 root root   4096 Jul 29 13:20 .
drwxrwxrwx 4 root root   4096 Jun 13 15:39 ..
-rw-r--r-- 1 root root	275 Jul  2 20:49 aliases.conf
-rw-r--r-- 1 root root   5464 Jul  2 20:49 fbtrace.conf
-rw-r--r-- 1 root root  26921 Jul  2 21:25 firebird.conf
drwxrwxrwx 2 root root   4096 Jul 26 16:31 h
-r--r--r-- 1 root root  26023 Jul  2 20:49 IDPLicense.txt
-r--r--r-- 1 root root  24301 Jul  2 20:49 IPLicense.txt
-rw-r--r-- 1 root root	687 Jul  2 20:49 README
-r-------- 1 root root	243 Jul 29 13:27 SYSDBA.password
-rw-r--r-- 1 root root 190594 Jul  2 20:49 WhatsNew

Environment

Host (name is develop):

root@develop:~# cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
NAME="Debian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

Docker version:

root@develop:~# docker version
Client:
 Version:       	18.09.7
 API version:   	1.39
 Go version:    	go1.10.8
 Git commit:    	2d0083d
 Built:         	Thu Jun 27 17:57:09 2019
 OS/Arch:       	linux/amd64
 Experimental:  	false

Server: Docker Engine - Community
 Engine:
  Version:      	18.09.7
  API version:  	1.39 (minimum version 1.12)
  Go version:   	go1.10.8
  Git commit:   	2d0083d
  Built:        	Thu Jun 27 17:23:02 2019
  OS/Arch:      	linux/amd64
  Experimental: 	false

Docker images:

root@develop:~# docker images
REPOSITORY          	TAG             	IMAGE ID        	CREATED         	SIZE
jacobalberty/firebird   latest          	c2dc89dc42e5    	2 weeks ago     	188MB
jacobalberty/firebird   2.5-sc          	923a50329d69    	3 weeks ago     	180MB
jacobalberty/firebird   <none>          	f8c7b499c85a    	2 months ago    	188MB
jacobalberty/firebird   <none>          	bdffcd794919    	16 months ago   	176MB


Running containers:

root@develop:~# docker ps
CONTAINER ID    	IMAGE                      	COMMAND              	CREATED         	STATUS                	PORTS                                          	NAMES
79be48605908    	jacobalberty/firebird:2.5-sc   "/usr/local/firebird…"   9 minutes ago   	Up 9 minutes (healthy)	0.0.0.0:33052->33052/tcp, 0.0.0.0:3052->3050/tcp   FB2-Develop
ac9eff70dd60    	jacobalberty/firebird:latest   "/usr/local/firebird…"   29 minutes ago  	Up 29 minutes (healthy)   0.0.0.0:33053->33053/tcp, 0.0.0.0:3053->3050/tcp   FB3-Develop
1c6e629dcd74    	jacobalberty/firebird:latest   "/usr/local/firebird…"   29 minutes ago  	Up 29 minutes (healthy)   0.0.0.0:3063->3050/tcp, 0.0.0.0:33063->33053/tcp   FB3-Testing

Limit of simultaneous connections

Is there a limit on simultaneous connections?
I can only connect one client at a time.

Example: if you are connected through ibexpert on one computer and I cannot connect on another computer.

Usage doc is missing

When I run it I get:

ERROR: The container started but didn't run the expected command

Alpine image?

It would be possible to build an image based on alpine?

I know it can bring some problems. MySql won't do it. PostgreSQL did it.

BTW: Thanks for the good work! 👍

FIREBIRD_USER and FIREBIRD_PASSWORD environment variables

Both MySql and PostgreSQL images use (db)_USER and (db)_PASSWORD environment variables to create a new (super)user and to set that user's password.

Could we also add FIREBIRD_USER and FIREBIRD_PASSWORD likewise?

It could keep using SYSDBA and masterkey respectively as defaults, when the vars are not set.

When creating the firebird container can you create the tables from as postgresql ??

Hello, I would like to know if the isql command that I handle in windows also works when I use firebird with Docker, because I was looking inside the container with the 'docker exec -it firebird bash' command but the ./isql does not appear can you help me please
docker run --name firebird -p 3050: 3050 -e ISC_PASSWORD = masterkey -v $ (pwd) opt / dbp: / var / lib / firebird / data -d jacobalberty / firebird
I leave this information on how to create my container in case you need ....

sysdba issue in container

Hello Jacob,
I found issue when start container based on your image of firebird 3.x. When I add it to docker compose by:

firebird:
    image: jacobalberty/firebird:3.0.2
    container_name: firebird
    hostname: firebird
    volumes:
      - ./database:/databases
      - ./conf/firebird.conf:/firebird/etc/firebird.conf
    environment:
      - ISC_PASSWORD=masterkey

Config:

grep -v '^#' code/hb/docker_3/firebird/conf/firebird.conf | grep -v '^$' 
DatabaseAccess = Restrict /databases
WireCrypt = Enabled

And when container started I found in logs:

docker-compose logs firebird
Attaching to helsi_firebird
firebird_1 | Statement failed, SQLSTATE = 08001
firebird_1 | I/O error during "open" operation for file "employee"
firebird_1 | -Error while trying to open file
firebird_1 | -No such file or directory
firebird_1 | Use CONNECT or CREATE DATABASE to specify a database
firebird_1 | Use CONNECT or CREATE DATABASE to specify a database
firebird_1 | Use CONNECT or CREATE DATABASE to specify a database

Inside container impossible to restore database backup from /databases
I found place where it failed:

if [ ! -f "${VOLUME}/system/security3.fdb" ]; then
    cp "${PREFIX}/skel/security3.fdb" "${VOLUME}/system/security3.fdb"
    file_env 'ISC_PASSWORD'
    if [ -z ${ISC_PASSWORD} ]; then
       ISC_PASSWORD=$(createNewPassword)
       echo "setting 'SYSDBA' password to '${ISC_PASSWORD}'"
    fi
    ${PREFIX}/bin/isql -user sysdba employee <<EOL
create or alter user SYSDBA password '${ISC_PASSWORD}';
commit;
quit;
EOL

If I replace employee with "${VOLUME}/system/security3.fdb" everything ok.

root@firebird:/# ls -la "${VOLUME}/system/security3.fdb"
-rw-r----- 1 root root 1605632 Dec  6 13:14 /firebird/system/security3.fdb
root@firebird:/# ${PREFIX}/bin/isql -user sysdba employee
Statement failed, SQLSTATE = 08001
I/O error during "open" operation for file "employee"
-Error while trying to open file
-No such file or directory
Use CONNECT or CREATE DATABASE to specify a database
SQL> exit;
root@firebird:/# ${PREFIX}/bin/isql -user sysdba /firebird/system/security3.fdb <<EOL
create or alter user SYSDBA password 'masterkey';
commit;
quit;
EOL
root@firebird:/# 

Such strange behavior observed on 3 PC already and I'm trying not to update image. Could you please check this issue and fix it or propose workaround?

Thank you in advance.
Dmitriy

Support for DLite

I'm using Docker with DLite in macOSX. When I wanna use mounted databases - outside the Docker FS, it mouted as Volume with NFS, the database cannot connect or can be created with ISQL.

I've run this and it able to operate:

sed -i 's/#RemoteFileOpenAbility = 0/RemoteFileOpenAbility = 1/g' /var/firebird/etc/firebird.conf 

Firebird 3.0.5 image can't set SYSDBA password

The image cannot set the SYSDBA password, neither with the randomized password, nor using ISC_PASSWORD (eg using the docker run --name firebird305 -p 3050:3050 -e ISC_PASSWORD=masterkey -e TZ=Europe/Amsterdam -e FIREBIRD_DATABASE=testdatabase.fdb -d jacobalberty/firebird:3.0.5), trying to connect will result in error "Install incomplete, please read the Compatibility chapter in the release notes for this version [SQLState:28000, ISC error code:335545029]"

The output of docker logs firebird305 shows:

Statement failed, SQLSTATE = 28000
Use of database at location /firebird/system/security3.fdb is not allowed by server configuration
Use CONNECT or CREATE DATABASE to specify a database
Use CONNECT or CREATE DATABASE to specify a database
Use CONNECT or CREATE DATABASE to specify a database
Use CONNECT or CREATE DATABASE to specify a database

This seems to be a result of the changes introduced in commit 1bf7b95 to use the security database to create users. I'm not sure why this works fine for 3.0.4.

Q: How to actually launch the database as daemon?

Hey there,

sorry to waste the issuelist like this but I'm kind of stuck; How do I start the database actually?
I'm able to launch the database in interactive mode and work my way through isql and be done with it. But at some point I'd love to run it as actual database.

I'm using the latest Dockerfile and I issue:
docker run -v /home/phil/Documents/studium/db/docker_mount/:/firebird jacobalberty/firebird
This allows me to mount the pre-existing database into the container.

But then I can not connect to the container.
Checking the network reveals nothing:

└[$] ss -atn | grep 3050
┌[1|phil:~/Documents/studium]
└[$] 

Tailing on firebird.log reveals:

880db2c33908	Sat Mar 24 08:23:07 2018
	setsockopt: error setting IPV6_V6ONLY to 0

So I'm not sure how to continue from here on. Any help is appreciated!

Armv7 build

Can we expect Armv7 support ? :)
Raspberry pi users would be grateful :)

Best regards!

Unable to connect from Python?

From host machine:

docker ps

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
af9b03a78fcd        jb/firebird:2.5     "/usr/local/firebird/"   5 hours ago         Up 5 hours          0.0.0.0:3050->3050/tcp   firebird

From Inside the Docker:

cd /usr/local/firebird/bin
./isql        
SQL> CONNECT "/databases/STAR.DB" user sysdba password masterkey;
Commit current transaction (y/n)?y
Committing.
Database:  "/databases/STAR.DB", User: sysdba

and the usual SQL statements work in terms of access to tables, data etc.

From a Python terminal:

import fdb
con = fdb.connect(host='127.0.0.1:3050', database='/databases/STAR.DB', 
                  user='sysdba', password='masterkey')

Results in error:

Traceback (most recent call last):
  File "<stdin>", line 3, in <module>
  File "/home/derek/.venvs/firebird/local/lib/python2.7/site-packages/fdb/fbcore.py", line 728, in connect
    "Error while connecting to database:")
fdb.fbcore.DatabaseError: ('Error while connecting to database:\n- SQLCODE: -904\n- unavailable database', -904, 335544375)

I have tried host='localhost:3050', and also using my machine's IP address. I have also tried dropping the '/databases/' prefix from the database name; but always the same error.

EDIT

I also installed FlameRobin (http://www.flamerobin.org/) and was able to connect to the DB server but, again, not to the database (trying different paths), so I don't think this is a Python problem. I also tried changing ownership of the DB.

Error pulling the image

When I add this image to my docker-compose it returns an error

...
  firebirddb:
    image: jacobalberty/firebird-docker:2.5.8-sc 
    networks: 
      - mynetwork
    volumes:
      - ./firebird-data:.firebird-data
...
Pulling firebirddb (jacobalberty/firebird-docker:2.5-sc)...
ERROR: The image for the service you're trying to recreate has been removed. If you continue, volume data could be lost. Consider backing up your data before continuing.

is this docker repo is really removed ?

How do I connect my database in flamerobin?

Hi guys, I want to know if anyone has tried to see their tables created in firebird.isql in FlameRobin is that adding the new server in flamerobin does not let me connect to the database from flameRobin ... Any solution?

Context: Database::Connect
Message: isc_attach_database failed
SQL Message : -902
Unsuccessful execution caused by a system error that precludes successful execution of subsequent statements
Engine Code : 335544721
Engine Message :
Unable to complete network request to host "8a3d683391fc".
Failed to locate host machine.
The specified name was not found in the hosts file or Domain Name Services.

But when I SQL>CONNECT from firebird.isql I don't get an error ... I don't know what I should do to be able to use firebird in flamerobin.
Extra information. the server created in flamerobin has my hostname=8a3d683391fc and port =3050.

How dow I override uidnumber and gidnumber of the firebird user?

I need to have the possibility to specify the uidnumber and gidnumber of the firebird user inside the container.

What I've tried so far is to move /etc/passwd and /etc/group from within the image outside, then change the uidnumer for firebird from 84 to 999 in /etc/passwd and the gidnumber from 84 to 999 in /etc/group.

Then I've mounted them via -v to their paths in the container

-v /some/path/passwd:/etc/passwd -v /some/path/group:/etc/group

But still when connecting to the running container via docker exec -ti mycontainername bash, and create a file, e.g. touch /tmp/bla the file gets user.group 84.84.

Asking the uidnumer, gidnumber via id firebird results in

uid=999(firebird) gid=999(firebird) groups=999(firebird)

I know this may be not per se related to the firebird docker image, but maybe somebody solved this alreads.

Thank you for helping
Kind regards

Unable to connect to docker container via JDBC

I'm trying to setup the docker container via docker compose then connect to the database via dbbeaver aka JDBC

The error im getting:

I/O error during "open" operation for file "/firebird/data/firebird.fdb"; Error while trying to open file; No such file or directory [SQLState:08001, ISC error code:335544344]
I/O error during "open" operation for file "/firebird/data/firebird.fdb"
I/O error during "open" operation for file "/firebird/data/firebird.fdb"
Error while trying to open file; No such file or directory

Within the docker container under /data there is a file firebird(which is the db file in this case).
I assumed that the database gets created by the FIREBIRD_DATABASE env var in the docker compose file.

docker-compose.yml

version: '3'

services:
  db:
    platform: linux/x86_64
    image: jacobalberty/firebird
    environment:
      ISC_PASSWORD: firebird
      FIREBIRD_DATABASE: firebird
      FIREBIRD_USER: firebird
      FIREBIRD_PASSWORD: firebird
    ports:
        - 3050:3050

My JDBC URL looks like this:
jdbc:firebirdsql://localhost:3050//firebird/data/firebird.fdb

[FEATURE REQUEST] FIREBIRD_ALIASES variable

Hi.

It would be nice to allow some variable for aliasing configuration, for example:

... -e FIREBIRD_ALIASES 'MYDB=/some/long/directory;MYOTHERDB=/some/other/long/directory' ...

this way, outside container, we could access the database using the aliases MYDB and MYOTHERDB instead of their path.

Maybe the official registerDatabase.sh (available at /usr/local/firebird/bin/) could help to implement this feature.

Thank you!

[I'm sorry my bad] firebird3.0-alpine

I had check on alpine docs, it shown docker apk add --no-cache --virtual NAME, but on your dockerfile was apk --no-cache --virtual=NAME.
I've tried build your docker but failed, it shown really weird.

fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/community/x86_64/APKINDEX.tar.gz
ERROR: unsatisfiable constraints:
  procmail (missing):
    required by: build-dependencies-20201025.100002[procmail]
The command '/bin/sh -c chmod +x ./build.sh &&     sync &&     ./build.sh &&     rm -f ./build.sh' returned a non-zero code: 2

I've had changed with --virtual NAME but still didn't build.
May i know where my failure ?
Thank you a lot

Note : I'm used Arcolinux with docker version Docker version 19.03.13-ce, build 4484c46d9d

Minideb

Hi Jacob!

The nice guys @Bitnami made a very interesting image which they are using for all their Docker images. It is a very battle-tested solution.

You can read more about it here and here.

TL;DR:

The minideb image currently weighs in at around 50MB uncompressed. For comparison the debian library image is 123MB, the alpine image is 5MB, and the newly released amazonlinux image is 328MB.

While minideb is much larger than alpine it is a lot smaller than the standard debian image while retaining most of the compatibility.

Do you think this could be used instead of current debian:jessie image?

Please note that, contrary to what I suggested in #10, I'm not asking you to maintain a new image. I know alpine is stretching the limits and it is reasonable to keep a different fork (like many other projects do). But I believe this is not the case here.

HEALTHCHECK

I will be adding healthcheck support soon.

See: https://blog.newrelic.com/2016/08/24/docker-health-check-instruction/ for details on the docker side of things.

For the firebird specific implementation I will be adding a simple script to check things. The defaults will simply do the equivalent of nc -z 127.0.0.1 3050 but I will also likely support some way of specifying a username/password/database combination to allow more in depth server health monitoring.

GDSExecption using jaybird 3

When I try to make a query from my java application using the jaybird 3x library, it returns the following error. I'm using firebird:2.5.6-sc on my Dockerfile.

error

My docker compose use a personal image that added extra directories to server.

image

Firebird binaries are not on $PATH

Trying to running any firebird binary like gbak is frustrated by incomplete $PATH.

Since the binaries are inside /usr/local/firebird/bin, this path should be on $PATH?

Permissions issue for new database?

I am not sure where in the chain of events the cause is, but this is the problem.

From inside the container, running isql:

SQL> CONNECT "/databases/TEST.FDB";
Statement failed, SQLSTATE = 08001
I/O error during "open" operation for file "/databases/TEST.FDB"
-Error while trying to open file
-No such file or directory

From the command line:

# ls -al /databases/             
total 796
drwxrwxr-x  2 1024 1025   4096 Mar 15 12:04 .
drwxr-xr-x 35 root root   4096 Mar 15 11:58 ..
-rw-rw----  1 root root 802816 Mar 15 12:05 TEST.DB

This database was created via a Python script using the fdb module:

    sql = "create database '%s/%s:%s' user '%s' password '%s'" % (
        host_IP, port, database, user, password
    )
    con = fdb.create_database(sql)

The databases directory is mapped to the container in the usual way, via docker-compose:

    volumes:
        - /path/to/firebird/data:/databases/
        - /path/to/firebird/logs:/var/firebird/log

Support for legacy authentication

Firebird installer for Windows has a task called EnableLegacyClientAuth which makes the following changes in firebird.conf:

AuthServer = Legacy_Auth, Srp, Win_Sspi 
AuthClient = Legacy_Auth, Srp, Win_Sspi 
UserManager = Legacy_UserManager, Srp 
WireCrypt = enabled 

Could we add a similar environment variable to enable this?

P.S.: The installer code can be found here.

GSEC not working on CENTOS

Running firefird 2.1.7 on CENTOS7 I get this error, I cannot get to the bottom of it.

[root@ba77fbcca7b9 bin]# ./gsec
Unable to complete network request to host "ba77fbcca7b9".
Failed to locate host machine.
Undefined service dev/mapper/docker-253/tcp.
unable to open database

did somebody already encounter something similar? I cannot upgrade to 2.5, unfortunately.

Thanks
Stefano

Problem running 2.5.7-ss

Hello Jacob,

When I try to run 2.5.7-ss with the command below, docker gives me an error.

docker run -it --name firebird \
   -e ISC_PASSWORD='!3ll0tec' \
   -v /tmp:/firebird/data \
   jacobalberty/firebird:2.5.7-ss

Error:

use gsec -? to get help
Unable to complete network request to host "localhost".
Failed to establish a connection.
unable to open database

Version 2.5.6-ss runs OK.

Firebird POST_EVENT problema with docker

Hello,

First I would like to thank you for the solution, the firebird container helped me a lot.

I searched about this bug and didn't find any solution. I have a problem with a POST_EVENT when my database is controlled by firebird in docker. The event is not fired and I have this return. I associated my host's port 3062 with the container's 3050

Debugger Exception Notification

Project Clients.exe raised exception class EIBNativeException with message '[FireDAC][Phys][FB]Unable to complete network request to host "MY_DNS".
Failed to establish a secondary connection for event processing.
No connections could be made because the target machine actively refused them. '.

If I try with a virtual machine with firebird installed normally, the event works.

Thanks for your attention

Unable to complete network request to host "localhost" from isql

Using the 2.5-ss image, I cannot query the database via isql as I'm getting an error saying that no networks requests to localhost can be made.

I'm starting a container via:

docker run -it -e "ISC_PASSWORD=masterkey" -e "FIREBIRD_DATABASE=test.gdb" -e "FIREBIRD_USER=test" -p 3050:3050  -v /tmp:/firebird/data --name firebird --rm jacobalberty/firebird:2.5-ss bash

Output is:

Warning - maximum 8 significant bytes of password used
setting 'test' password to 'f6a26ebc667b433f2bc6'
Use CONNECT or CREATE DATABASE to specify a database

Then I'm running:

cd /usr/local/firebird/bin
./isql ${DBPATH}/test.gdb -u test -p f6a26ebc667b433f2bc6

Which yields:

Statement failed, SQLSTATE = 08006
Unable to complete network request to host "localhost".
-Failed to establish a connection.
Use CONNECT or CREATE DATABASE to specify a database

I tested the same sequence of executions with 2.5.7-ss and 2.5.6-ss. While the error also exists in2.5.7-ss, in 2.5.6-ss everything works fine. (Note that in the latter the interactive shell has to be started separately.)

Change Database Path

Hi, how can I change the database path? currently, it's set to /firebird/database, I would like to change this path, I have tried the env DBPATH, but din't work.
I'm using this command: docker run --name my-firebird -d -p 3050:3050 -e EnableLegacyClientAuth=true -e ISC_PASSWORD=masterkey -e FIREBIRD_DATABASE=DATABASE.fdb -e DBPATH="/my-path" jacobalberty/firebird:3.0

Error when trying to connect

I get the following error when trying to connect using docker image jacobalberty/firebird:3.0.4

Install incomplete, please read the Compatibility chapter in the release notes for this version

Any idea how to check what the issue might be?

Volume mapping throws infinite restarting loop

Hi there!

As soon as I mount the /firebird/etc folder to the host, and start the compose, the container creates successfully, but it is in a restarting loop, and throws this error msg:

Statement failed, SQLSTATE = 08001
I/O error during "open" operation for file "security.db"
-Error while trying to open file
-No such file or directory
Use CONNECT or CREATE DATABASE to specify a database
Use CONNECT or CREATE DATABASE to specify a database
Use CONNECT or CREATE DATABASE to specify a database

Which is true, since when I mount the folder to the host, no config file will be placed in the /firebird/etc folder, that way the security.db database cannot be created.
If its allowed to mount this config folder to host, then why it is not working, or if its not allowed then why there are config files?
This is my docker-compose:


version: '3.3'
services:
    firebird-3:
        restart: unless-stopped
        container_name: fb3
        ports:
            - '3050:3050'
            - '30501:30501'
        volumes:
            - '/var/containersdata/firebird3/data/:/firebird/data/'
            - '/var/containersdata/firebird3/etc/:/firebird/etc/'
            - '/var/containersdata/firebird3/log/:/firebird/log/'
        environment:
            - TZ=Europe/Budapest
            - LANG=C.UTF-8
            - LC_ALL=C.UTF-8
            - ISC_PASSWORD=masterkey
        image: 'jacobalberty/firebird:3.0'


Error Running Container - Tag 2.5-ss

When I start the container it fails instantly with the logged line: /usr/local/firebird/docker-entrypoint.sh: line 19: kill: (23187) - No such process

docker apt-get - unable to install packages

If i use the master (v3.0) Dockerfile to extend from, i cannot install git.

FROM jacobalberty/firebird:v3.0

RUN apt-get update && \
    apt-get install -y curl git;
[...]

Installation fails with last attempt to install or configure netbase.

Running hooks in /etc/ca-certificates/update.d....done.
Errors were encountered while processing:
 netbase
E: Sub-process /usr/bin/dpkg returned an error code (1)

Seems unrelated to the debian package used, as the following works

FROM debian:jessie

RUN apt-get update && \
    apt-get install -y curl git

git is required for some npm installations in our project

Too many volumes?

The current image has SIX volumes declared in Dockerfile.

Each new container instance creates 6 new volumes, most of them containing data which should not really persists between instances.

I actually use only one (the /databases one) so I got 5 unneeded (and unnamed) volumes in my docker volume ls results. And this for each Firebird instance I start. This is burdensome. 😟

Am I missing something? We really need to create volumes for all this? (/tmp?)

Since we always can declare new volumes for any file or folder inside the container, I propose to reduce the Dockerfile volumes to the bare minimum:

VOLUME ["/databases"]

This way, should the need arise, the user could declare extra volumes just for what he needs (e.g. secrets db or log files).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.