【问题标题】:Docker Apache Container looses static site data after rebootDocker Apache Container 重启后丢失静态站点数据
【发布时间】:2019-07-10 20:40:34
【问题描述】:

我有一个 Docker 容器,它使用 Symfony 提供一些 php-Pages。它还可以连接到运行良好的数据库。 根目录是/var/www/html/public,/var/www/html的大致结构如下(-files和[directories]):

[/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 –

重新启动服务器后,除了 public 中的“uploads”文件夹之外的所有文件都被删除,服务器文件如下所示:

[/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/

【问题讨论】:

  • 显示用于运行容器的命令。
  • @michalk 创建 myapp_data 卷后我运行了这个命令: 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

标签: php symfony docker volume reboot


【解决方案1】:

我的错误是在 Dockerfile 中指定了 VOLUME /var/www/html/public/uploads/

删除此行并仅使用 docker run -v ... 将文件夹设为卷后,该错误不再发生。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-28
    • 2021-11-28
    • 2016-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多