Пустая папка тома после docker-compose - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть dockerfile, который загружает некоторые вещи из композитора в папку поставщика на контейнере. Теперь я хочу связать папку вендора на контейнере с моей средой хоста. Если я запускаю службу с помощью docker-compose, папка vendor будет пустой. Что я могу сделать, чтобы сохранить данные в контейнере?

Вот мой докер-файл:

FROM php:7.3.3-apache-stretch
RUN apt-get update && \
apt-get install -y --no-install-recommends nano \
git \
openssh-server

RUN curl -s https://getcomposer.org/installer | php && \
echo "{}" > composer.json && \
php composer.phar require slim/slim "^3.0" && \
chown -R www-data. .

VOLUME /var/www/html/vendor

А вот мой докер-compose.yml:

version: '3.2'
services:
  slim:
    build:
      context: ./slim
    ports:
      - "1337:1337"
    networks:
      - backend
    volumes:
      - ./slim/vendor:/var/www/html/vendor
networks:
  backend:

спасибо за помощь

1 Ответ

1 голос
/ 02 апреля 2019

То, что вы видите, является ожидаемым поведением.

Если вы хотите, чтобы папка вендора также была заполнена и была доступна на хосте, то вам нужно запустить установку ПОСЛЕ сопоставления, а не наоборот.

Эта команда:

curl -s https://getcomposer.org/installer | php && \
echo "{}" > composer.json && \
php composer.phar require slim/slim "^3.0" && \
chown -R www-data. .

должна стать вашей ENTRYPOINT или CMD, чтобы она запускалась при запуске контейнера (а не при его создании).

Я бы предложилпоместите эти команды в скрипт установки и запустите это.Это выглядело бы чище и легче для понимания.

Надеюсь, это поможет, но если вам нужна дополнительная информация, просто дайте мне знать.

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