testcontainers/testcontainers-java

Improve documentation to include JNA configuration capabilities

Open

#1 910 ouverte le 24 sept. 2019

Voir sur GitHub
 (4 commentaires) (1 réaction) (0 assignés)Java (1 588 forks)batch import
help wantedresolution/acknowledged

Métriques du dépôt

Stars
 (7 535 stars)
Métriques de merge PR
 (Merge moyen 2j 17h) (2 PRs mergées en 30 j)

Description

Hi all,

testcontainers appears to be using JNA to perform its magic. By default, JNA writes to /tmp/jna folder and tries to execute something from there.

On some environments, /tmp folder is mounted with noexec flag, which makes the whole process fail.

Could you please add a documentation section where you specify your usage of JNA (maybe it's coming from docker-java?) and adding a note that properties jna.tmpdir and java.io.tmpdir can be used to override the default value?

A sample error that might occur during build with wrong configuration is:

ERROR o.t.d.EnvironmentAndSystemPropertyClientProviderStrategy.test - ping failed with configuration Environment variables, system properties and defaults. Resolved: 
[08:35:13][Step 2/5]     dockerHost=unix:///var/run/docker.sock
[08:35:13][Step 2/5]     apiVersion='{UNKNOWN_VERSION}'
[08:35:13][Step 2/5]     registryUrl='https://index.docker.io/v1/'
[08:35:13][Step 2/5]     registryUsername='xxx'
[08:35:13][Step 2/5]     registryPassword='null'
[08:35:13][Step 2/5]     registryEmail='null'
[08:35:13][Step 2/5]     dockerConfig='DefaultDockerClientConfig[dockerHost=unix:///var/run/docker.sock,registryUsername=xxx,registryPassword=<null>,registryEmail=<null>,registryUrl=https://index.docker.io/v1/,dockerConfigPath=/home/xxx/.docker,sslConfig=<null>,apiVersion={UNKNOWN_VERSION},dockerConfig=<null>]'
[08:35:13][Step 2/5]  due to java.lang.RuntimeException: java.lang.UnsatisfiedLinkError: /tmp/jna-100295547/jna9104525941980512569.tmp: /tmp/jna-100295547/jna9104525941980512569.tmp: failed to map segment from shared object: Operation not permitted
[08:35:13][Step 2/5] 	at org.rnorth.ducttape.timeouts.Timeouts.callFuture(Timeouts.java:68)

And I understand it is not directly your issue, but having a documentation section about it would help others in the future

Thanks and cheers

Guide contributeur