How to install DB2 Express-C on Docker and set up the JDBC connection properties

(Last Updated On: January 4, 2018)

Introduction

While developing Hibernate, I need to test the code base against a plethora of relational database systems: Oracle, SQL Server, PostgreSQL, MySQL, MariaDB, Informix, and of course DB2.

However, having all these databases installed on my system is far from ideal, so I rely a lot on Docker for this task. In this article, I’m going to show how easily you can install DB2 on Docker and set up the JDBC connection so that you can run Hibernate tests on DB2.

Installing the DB2 Docker container

Nowadays, all major RDBMS providers offer official Docker images on DockerHub, and IBM is no different. The Express-C edition can be fetched automatically during Docker container set up.

To create a new DB2 Docker container on Windows, you need to run the following command:

docker run ^
 --name db2 ^
 -p 50000:50000 ^
 -e DB2INST1_PASSWORD=db2inst1-pwd ^
 -e LICENSE=accept ^
 -d ibmcom/db2express-c db2start

On Linux, you need to use the \ multiline separator:

docker run \
 --name db2 \
 -p 50000:50000 \
 -e DB2INST1_PASSWORD=db2inst1-pwd \
 -e LICENSE=accept \
 -d ibmcom/db2express-c db2start

Now, you can see the newly installed Docker container by running docker ps -as

> docker ps -as
CONTAINER ID  IMAGE                COMMAND                  CREATED       STATUS        PORTS                              NAMES  SIZE
731eee777310  ibmcom/db2express-c  "/entrypoint.sh db..."   2 minutes ago Up 2 minutes  22/tcp, 0.0.0.0:50000->50000/tcp   db2    3.64 MB (virtual 1.71 GB)

When you want to stop DB2, you can run:

> docker stop db2

To start it again, you have to run the following command:

> docker start db2

Setting up the DB2 Docker container

To set up the DB2 Docker container, you need to open a bash terminal inside the DB2 container:

docker exec -i -t db2 /bin/bash

Now, you need to switch to the db2inst1 Linux user which is set up to run DB2:

su - db2inst1

We are going to create a new database called hiber8. Strangely, DB2 limits the database name length to 8 bytes only.

db2 create db hibern8

Setting up the JDBC conection

Ironically, it takes more time to get the JDBC Driver than to install the DB2 Docker image. To get the JDBC Driver, you need to have an IBM account and download it from IBM Support.

Now, you can install the db2jcc4.jar in your local Maven repsoitory using the following command:

mvn install:install-file -Dfile=db2jcc4.jar -DgroupId=com.ibm.db2 -DartifactId=db2jcc -Dversion=10.5 -Dpackaging=jar -DgeneratePom=true

To connect to the newly installed DB2 Docker container, you need the following connection properties:

db2 : [
    'db.dialect' : 'org.hibernate.dialect.DB2Dialect',
    'jdbc.driver': 'com.ibm.db2.jcc.DB2Driver',
    'jdbc.user'  : 'db2inst1',
    'jdbc.pass'  : 'db2inst1-pwd',
    'jdbc.url'   : 'jdbc:db2://127.0.0.1:50000/hibern8'
]

That’s it!

If you enjoyed this article, I bet you are going to love my Book and Video Courses as well.

Conclusion

Docker makes database testing a breeze. You can have as many database systems you need set up in Docker without having to bloat your currently running operating system.

Another great advantage of having your testing databases on Docker is that you can simply copy the Docker machine file from one system to another, which is ideal when you switch to a new notebook or when you have to share the default database containers with the rest of your team.

Subscribe to our Newsletter

* indicates required
10 000 readers have found this blog worth following!

If you subscribe to my newsletter, you'll get:
  • A free sample of my Video Course about running Integration tests at warp-speed using Docker and tmpfs
  • 3 chapters from my book, High-Performance Java Persistence, 
  • a 10% discount coupon for my book. 
Get the most out of your persistence layer!

Advertisements

4 thoughts on “How to install DB2 Express-C on Docker and set up the JDBC connection properties

  1. I can install it, but cannot access it, neither via IBM Data Studio nor DBeaver, always get “connection refused”. Can you help? Many thanks

    1. I never used IBM Data Studio nor DBeaver, so I don’t know how you can set up those. However, the JDBC connection properties are the ones that I showed you and you can easily test that using IntelliJ IDEA database visualizing too.

Leave a Reply

Your email address will not be published. Required fields are marked *