Как получить доступ к docker составному объему изнутри контейнера - PullRequest
1 голос
/ 10 февраля 2020

Я монтирую локальный файл внутри docker контейнера через файл docker-compose.yml:

version: '3'

services:
    myapp:
        build:
            context: ./dockerfiles
            dockerfile: myapp.Dockerfile
            args:
                - UID=1000
                - GID=1000
        network_mode: host
        volumes:
            - ./volumes/logs:/opt/myapp/logs

Смонтированная папка принадлежит моему пользователю (uid: 1000, gid: 1000), и это идентификаторы, которые получает пользователь docker, но пользователь docker не может записать в подключенную папку (permission denied).

Dockerfile:

FROM centos:7
ARG UID=1000
ARG GID=1000

RUN yum -y update && \
    yum -y install epel-release && \
    yum -y install passwd curl jq supervisor iputils openssl-devel
RUN yum -y clean all

RUN useradd -m -s /bin/sh user && \
    passwd -d user && \
    usermod -o -u ${UID} user && \
    groupmod -o -g ${GID} user

VOLUME ["/opt/myapp/logs"]

ADD myapp /opt/myapp/app
ADD supervisor/services.ini /etc/supervisord.d/services.ini
ADD start.sh /

RUN chown -R user:user /opt/myapp
RUN chown user:user /start.sh

USER user
CMD ["/start.sh"]

start. sh

exec supervisord -c /etc/supervisord.conf -n

service.ini

[program:myapp]
user = user
autorestart = true
stdout_logfile = /dev/stdout
stdout_logfile_maxbytes = 0
stderr_logfile = /dev/stderr
stderr_logfile_maxbytes = 0
command = /opt/myapp/app

Мой app работает с user и не может записывать свои журналы в смонтированную папку. Моя цель - получить доступ к журналам вне контейнера docker.

Даже если я запускаю пользователя root внутри контейнера, я все равно не могу получить доступ к смонтированной папке!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...