Skip to content
Peter Rice edited this page May 6, 2022 · 3 revisions

An introduction to outstanding issues in the current docker images

Issues

inter-container communication

The transmart-db (postgres database) container exposes port 5432 to the host. Connecting to this port works from a host session:

% psql -d transmart -p 5432 -h localhost -U biomart_user -W

Password: <biomart_user>

But connecting from another container fails.

From transmart-app (tomcat) it fails to find host jdbc:postgresql://tmdb:5432/transmart as defined in transmart-app/Datasource.groovy

When transmart-load was defined as part of the docker container network that also failed to connect to host tmdb

% docker-compose run tmload psql -d transmart -p 5432 -h localhost -U biomart_user -W

Password: <biomart_user>

As a workaround transmart-load (tmload) is currently defined on the 'host' network, using the host exposed port 5432 to talk to the the postgresql database.

Creating users within docker

Users created within docker by default get uid 1000. Where this is a privileged user, that is the host system user they will be running as.

For tomcat the container starts with an entrypoint script which creates the tomcat group and user, changes all tomcat directories to be owned by this user, and then launches tomcat. This allows variables to be defined to specify the uid and gid for the tomcat user and group.

Where a host file is provided (e.g. DataSource.groovy and Config.groovy for transmart-app) that file is included in the tomcat directory chown path and will be owned in the docker volume by a host user with that uid and a host group with that gid (if they exist)

Clone this wiki locally