podman-composer: Aufrechterhaltung der korrekten Dateieigentümerschaft zwischen Host und Container

podman-composer: Aufrechterhaltung der korrekten Dateieigentümerschaft zwischen Host und Container

Hier ist ein Problem. Hier ist ein Teil meiner podman-compose.yml

  web:
    build: .
    args:
      USERNAME: ${USERNAME}
      GROUPNAME: ${GROUPNAME}
      USERID: ${USERID}
      GROUPID: ${GROUPID}
    depends_on:
      - db
    environment:
      - TERMINFO=/etc/terminfo
      - TERM=xterm-256color
      - PGHOST=db
      - DATABASE_URL=postgresql://db
      - PGUSER=postgres
      - PGPASSWORD=password
      - APP_HOST=web
    userns: keep-id

    ports:
     - "3000:3000"
    volumes:
     - .:/app:z

Dies ist der Aufruf an den Podman-Composer:

podman-compose up --build-arg USERNAME=$(id -un) --build-arg GROUPNAME=$(id -gn) --build-arg USERID=$(id -u) --build-arg GROUPID=$(id -g)

Das Volume dafür websoll vom Container und vom Host aus schreibzugänglich sein.

In dieser Konfiguration gehören der entsprechende Ordner im Container und die darin enthaltenen Dateien dem Root-Benutzer. Wenn ich ein „U“-Flag wie dieses hinzufüge: - .:/app:z,U, wird der Ordner für den Container schreibgeschützt, aber lokal auf dem Host gehört er dem Benutzer mit UID 100999 und GID 100999.

Aber wenn ich den resultierenden Container mit dem Befehl ausführe

podman run -it -v .:/home/lesha:z --userns=keep-id  --entrypoint /bin/sh quotes_web:latest 

Die Eigentümerschaft ist innerhalb des Containers korrekt und ändert sich auf dem Host nicht. Alles funktioniert wie vorgesehen. Irgendwelche Vorschläge, wie der Composer das Problem beheben kann?

Dies ist eine Docker-Datei:

FROM docker.io/library/ruby:3.0.0-alpine

ARG USERNAME
ARG GROUPNAME
ARG USERID
ARG GROUPID

COPY run_rails.sh /usr/local/bin
RUN chmod +x /usr/local/bin/run_rails.sh

WORKDIR /app

ENV APPPATH='/app'

RUN echo '***' && \
    addgroup -g $GROUPID $GROUPNAME && \
    adduser -S -u $USERID -G $GROUPNAME  -h /home/$USERNAME -s /bin/sh $USERNAME && \
    mkdir -p /home/$USERNAME && \
    chmod 700 /home/$USERNAME && \
    mkdir -p $APPPATH && \
    echo "export PATH=$PATH:/home/$USERNAME/.local/share/gem/ruby/3.0.0/bin" >> /home/$USERNAME/.profile && \
    echo 'gem: --user-install --env-shebang --no-rdoc --no-ri' >> /home/$USERNAME/.gemrc && \
    echo "Change ownership chown -R $USERNAME:$GROUPNAME $APPPATH" && \
    chown -R $USERNAME:$GROUPNAME $APPPATH && \
    chown -R $USERNAME:$GROUPNAME /home/$USERNAME

USER $USERNAME
ENTRYPOINT ["run_rails.sh"]

EXPOSE 3000

Danke schön!

Antwort1

Mein Fehler. Funktioniert bei mir mit userns_mode: keep-idstattuserns: keep-id

verwandte Informationen