testcontainers / testcontainers/testcontainers-java

Starting docker-compose test containers as non-root user

Abierto
#4,688 2 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

area/docker-compose resolution/waiting-for-info type/question
Lenguaje dominante
Java
Estrellas
8.7k
Forks
1.9k
Merge medio
2 d 17 h
PR fusionados (30 d)
9

Descripción

Similar to: https://github.com/testcontainers/testcontainers-java/issues/2590

I'm trying to start our docker-compose based testcontainers tests, and pass in the local username from the running system, in order that the container can write files to mounted volumes with the correct permissions.

I tried a compose with:

version: "3.7"
services:
  myservice:
    image: xxx
    user: ${CURRENT_USER}
    ...
    volumes:
      ./target/:/target

And passed in CURRENT_USER environment variable to testcontainers using:

  env = new DockerComposeContainer(new File("src/main/docker/docker-compose.yml"));
  env.withLocalCompose(true);
  env.withEnv("CURRENT_USER", System.getProperty("user.name"));

However, this fails with:

Cannot start service my server: unable to find user bmiddleton: no matching entries in passwd file

I presume it's looking for that user in the ryuk container, and not the OS - where the user does exist.

How can I get a testcontainers test running from a docker compose file to write its files using the current user of the operating system?

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Comienza con la configuración de DockerComposeContainer usando src/main/docker/docker-compose.yml, incluyendo withLocalCompose(true) y withEnv("CURRENT_USER", System.getProperty("user.name")). Reproduce el fallo de la prueba basada en Compose e inspecciona cómo se gestionan el usuario del servicio de Compose y el volumen montado ./target/. Se considera terminado cuando el servicio puede escribir archivos montados con los permisos del usuario actual del sistema operativo sin el error de búsqueda en passwd.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
docker, docker-compose, java
Área
devops, testing
Tipo de issue
Nueva funcionalidad
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.