testcontainers / testcontainers/testcontainers-java

Starting docker-compose test containers as non-root user

Offen
#4,688 2 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

area/docker-compose resolution/waiting-for-info type/question
Vorherrschende Sprache
Java
Sterne
8.7k
Forks
1.9k
Ø Merge
2 T. 17 Std.
Gemergte PRs (30 T.)
9

Beschreibung

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?

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginnen Sie mit der Einrichtung von DockerComposeContainer unter Verwendung von src/main/docker/docker-compose.yml, einschließlich withLocalCompose(true) und withEnv("CURRENT_USER", System.getProperty("user.name")). Reproduzieren Sie den Fehler des Compose-basierten Tests und untersuchen Sie, wie der Benutzer des Compose-Dienstes und das eingebundene ./target/-Volume behandelt werden. Als erledigt gilt die Aufgabe, wenn der Dienst eingebundene Dateien mit den Berechtigungen des aktuellen OS-Benutzers schreiben kann, ohne dass ein passwd-Lookup-Fehler auftritt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
docker, docker-compose, java
Bereich
devops, testing
Issue-Typ
Feature
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.