Docker Apache Container теряет статические данные сайта после перезагрузки - PullRequest
0 голосов
/ 10 июля 2019

У меня есть контейнер Docker, который обслуживает некоторые php-страницы с Symfony. Он также имеет подключение к базе данных, которая прекрасно работает. Корневой каталог - / var / www / html / public, а грубая структура / var / www / html выглядит следующим образом (-files и [directoryies]):

[/var/www/html]
  -Dockerfile
  -package.json
  -vendor
  -src
  -someotherstuff
  [public]
     index.php
     favicon.ico
     [CSS]
     [Javascript]
     [uploads -> this folder is a volume, users can upload their own data]
        -userFileA
        -userFileB

Когда я запускаю контейнер с этой командой, все отлично работает:

docker run -d --restart always --name myContainerName -e DATABASE_URL=mysql://mysql:${DB_PW}@mysql:3306/myDbName -e APP_ENV=${ENV_TYPE} -e APP_SECRET=******** -v myapp_data:/var/www/html/public/uploads -p 127.0.0.1:82:80 --net mysql_net myId/myRepo –

После того, как я перезагружаю сервер, все файлы, кроме папки «uploads» внутри public, удаляются, и файлы сервера выглядят следующим образом:

[/var/www/html]
  -Dockerfile
  -package.json
  -vendor
  -src
  -someotherstuff
  [public]
     [uploads -> this folder is a volume]
        -userFileA
        -userFileB

Теперь веб-сайт полностью сломан, поскольку index.php в общей папке отсутствует.

Я не понимаю, почему это происходит, и только при перезагрузке. Если между томом и другой папкой возник конфликт, не должно ли это произойти при первом запуске? И почему удаляются только файлы внутри общедоступных, а не снаружи? Я действительно сбит с толку, и большая часть информации, которую я могу найти по этим темам, является ошибкой, потому что том настроен неправильно, но мой том работает нормально и фактически является единственной вещью, все еще правильно заполненной после перезагрузки

Это мой Dockerfile и команды, которые я использую для его создания:

#docker build --tag=myId/myRepo .
#docker push myId/myRepo
FROM php:7.2-apache
ENV DB_HOST=mysql:3306 \
    DB_USER=myDbUser \
    DB_NAME=myDbName
COPY php.ini "$PHP_INI_DIR/php.ini"
RUN docker-php-ext-install pdo_mysql && a2enmod rewrite
COPY ./ /var/www/html/
COPY 000-default.conf /etc/apache2/sites-available/000-default.conf
VOLUME /var/www/html/public/uploads/

1 Ответ

0 голосов
/ 12 июля 2019

Очевидно, это ошибка в Docker версии 18.09.7, если вы столкнулись с этой ошибкой, вам следует вернуться к версии 18.09.5.

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