testcontainers / testcontainers/testcontainers-java

Starting docker-compose test containers as non-root user

Ouverte
#4,688 2 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

area/docker-compose resolution/waiting-for-info type/question
Langage dominant
Java
Étoiles
8.7k
Forks
1.9k
Merge moyen
2 j 17 h
PR mergées (30 j)
9

Description

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?

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par la configuration de DockerComposeContainer à l’aide de src/main/docker/docker-compose.yml, en incluant withLocalCompose(true) et withEnv("CURRENT_USER", System.getProperty("user.name")). Reproduisez l’échec du test basé sur Compose et examinez comment sont gérés l’utilisateur du service Compose et le volume ./target/ monté. Le travail est terminé lorsque le service peut écrire les fichiers montés avec les permissions de l’utilisateur actuel du système d’exploitation, sans erreur de recherche dans passwd.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
docker, docker-compose, java
Domaine
devops, testing
Type d'issue
Fonctionnalité
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.