glaphire
@glaphire
PHP developer

Как настроить .bash_history в контейнере, если пользователь контейнера — не root?

Предыстория:
Чтобы не мучаться с изменением прав на файлы, которые создаются из php контейнера, я сделала проброс пользователей из хост машины внутрь контейнера в файле docker-compose.yml.
Текущая проблема:
Я захотела добавить сохранение истории команд внутри php контейнера, нашла однотипные примеры, которые показывают, что нужно замапить файл .bash_history на хост машине с файлом /root/.bash_history внутри контейнера.
Доступ к папке /root имеет только root пользователь, соответственно запуск контейнера из под host юзера теряет полезность.

Как настроить хранение истории правильно?

Фрагмент docker-сompose.yaml:
php-fpm:
        user: ${HOST_USER}  #проброс пользователя
        working_dir: /app
        build:
            context: ./docker/php-fpm
            dockerfile: Dockerfile
        volumes:
            - .:/app
            - ./docker/php-fpm/log/:/var/log/
            - ./docker/php-fpm/bash/.bash_history:/root/.bash_history  #проброс истории команд
            - /etc/group:/etc/group:ro #проброс пользователя
            - /etc/passwd:/etc/passwd:ro  #проброс пользователя
        ports:
            - '9000:9000'
        networks:
            - internal
  • Вопрос задан
  • 143 просмотра
Решения вопроса 2
Я захотела добавить сохранение истории команд внутри php контейнера, нашла однотипные примеры, которые показывают, что нужно замапить файл .bash_history на хост машине с файлом /root/.bash_history внутри контейнера.
Если вам нужна история не рута, а другого пользователя, то мапить нужно /home/%username%/.bash_history.
Ответ написан
glaphire
@glaphire Автор вопроса
PHP developer
Нашла правильную инструкцию после оформления вопроса :)
На основе ответа https://stackoverflow.com/a/54693124/5371978
Создать:
docker-compose.yml
docker/
   \--> bash/
      \--> .bashrc
      \--> .bash_history

Замапить в docker-compose.yml
php-fpm:
        user: ${HOST_USER}  
        working_dir: /app
        build:
            context: ./docker/php-fpm
            dockerfile: Dockerfile
        volumes:
            - .:/app
            - ./docker/php-fpm/log/:/var/log/
            - ./docker/bash/.bashrc:/home/${HOST_USER_NAME}/.bashrc
            - ./docker/bash:/home/${HOST_USER_NAME}/bash
            - /etc/group:/etc/group:ro
            - /etc/passwd:/etc/passwd:ro
        ports:
            - '9000:9000'
        networks:
            - internal
        ports:
            - '9000:9000'
        networks:
            - internal

Прописать в ./docker/bash/.bashrc :
export HISTFILE=~/bash/.bash_history
touch $HISTFILE
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы