docker compose: Eine lokale Datei(!) als Volume einbinden

CyborgBeta

Commander
Registriert
Jan. 2021
Beiträge
2.455
Hallo, ich bin i-wie auf ein Problem gestoßen.

### Gewünschtes Verhalten:

Ich möchte eine Datei (./openssh-server/passwd) in einen docker compose container einbinden. Wenn es diese Datei auf dem Host noch nicht gibt, soll sie vom Guest erstellt werden. Wenn es (später) diese Datei auf dem Host aber bereits gibt, dann soll sie einfach eingebunden werden.

Ziel ist es, im laufenden Container eine Änderung an dieser Datei vorzunehmen (das Benutzerverzeichnis des normalen Benutzers soll angepasst werden, bzw. auf einen anderen Pfad gesetzt werden).

### Problem 0:

Wenn ich diese Datei vorher auf dem Host mit touch ./openssh-server/passwd anlege, dann ist sie leer, und der Container kann nicht starten.

### Problem 1:

Code:
    volumes:
      - ./openssh-server/config:/config
      - ./openssh-server/passwd:/etc/passwd

Hierbei startet der Container nicht, weil docker compose ein Verzeichnis passwd anlegt, und versucht, dieses als Verzeichnis zu mounten, was nicht funktioniert.

### Problem 2:

Code:
    volumes:
      - ./openssh-server/config:/config
      - type: bind
        source: ./openssh-server/passwd
        target: /etc/passwd
        propagation: slave

Hierbei startet der Container nicht, weil docker compose sagt, die Option propagation: slave sei nicht erlaubt.

Siehe auch hier: https://docs.docker.com/storage/bind-mounts/#configure-bind-propagation

### Frage:

Gibt es eine Möglichkeit, eine Datei(!) (kein Verzeichnis) einzubinden, welche auf dem Host noch nicht existiert, aber die vom Guest erstellt werden soll?
 
  • Gefällt mir
Reaktionen: CyborgBeta
@blablub1212 Danke, und das ist eigentlich schade, ich nutze zurzeit das lscr.io/linuxserver/openssh-server:latest-Image.
 
  • Gefällt mir
Reaktionen: madmax2010 und CyborgBeta
Danke, das hab ich übersehen (oder falsch antizipiert :D ).
 
Zurück
Oben