Skip to content

Run the dev container

The IBM Informix Developer Edition Docker image is the recommended dev / integration-test target. It’s the same image our CI runs against.

Terminal window
docker run -d --name informix-dev \
-e LICENSE=accept \
-p 9088:9088 \
-p 9089:9089 \
--privileged \
icr.io/informix/informix-developer-database:15.0.1.0.3DE
  • 9088 — clear-text SQLI listener
  • 9089 — TLS-enabled SQLI listener (server-side cert is self-signed; use tls=True in dev)
  • --privileged — required for the dev image’s shared-memory tuning

The image takes ~90 seconds to initialize. Watch for oninit running:

Terminal window
docker logs -f informix-dev
FieldValue
userinformix
passwordin4mix
databasesysmaster (always exists)
serverinformix

For application use create your own database:

Terminal window
docker exec -it informix-dev bash -c '
echo "CREATE DATABASE app_db WITH LOG;" | dbaccess sysmaster
'

Smart-LOBs (BLOB / CLOB) require additional one-time setup:

Terminal window
# Inside the container
docker exec -it informix-dev su - informix -c '
onspaces -c -S sbspace1 -p $INFORMIXDIR/sbspace1 -o 0 -s 100000
# Edit $ONCONFIG to set SBSPACENAME sbspace1, then:
onmode -ky
oninit -y
# Take a level-0 archive so the sbspace is usable
ontape -s -L 0
'

After that, BLOBs and CLOBs work end-to-end. See docs/DECISION_LOG.md §10 for the gory details.

Terminal window
make ifx-up # starts the container if not already running
make test-integration # runs the 231 integration tests

Or directly:

Terminal window
pytest -m integration

“Connection refused” on 9088: the image is still initializing. Wait for oninit running in the logs.

Login succeeds, queries fail with -329 (database does not exist): you’re connecting to a database that hasn’t been created yet. Use database="sysmaster" for ad-hoc testing — it always exists.

-908 (system error / shared memory): the container needs --privileged. Restart with that flag.