【发布时间】:2017-07-04 01:03:38
【问题描述】:
我正在尝试 dockerize 一个 PHP 应用程序。在 dockerfile 中,我下载存档、解压缩等。
一切正常。但是,如果发布了新版本并更新了 dockerfile,我必须重新安装应用程序,因为 config.php 会被覆盖。
所以我想我可以像处理数据库一样将文件挂载为卷。
我尝试了两种方式,卷和直接路径。
码头工人撰写:
version: '2'
services:
app:
build: src
ports:
- "8080:80"
depends_on:
- mysql
volumes:
- app-conf:/var/www/html/upload
- app-conf:/var/www/html/config.php
environment:
DB_TYPE: mysql
DB_MANAGER: MysqlManager
mysql:
image: mysql:5.6
container_name: mysql
volumes:
- mysqldata:/var/lib/mysql
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD:
MYSQL_DATABASE:
MYSQL_USER:
MYSQL_PASSWORD:
volumes:
mysqldata:
app-conf:
这会导致错误:
我用给定的路径尝试了它,作为一个挂载的卷。
/src/docker/myapp/upload:/var/www/html/upload
/src/docker/myapp/upload:/var/www/html/config.php
但是,这两种方法都行不通。使用已安装的卷,我看到上传已创建。
然后它失败了:
/var/www/html/config.php\"导致\"不是目录\"""
如果我尝试一下
/src/docker/myapp/upload/config.php:/var/www/html/config.php
Docker 创建上传文件夹,然后创建一个 config.php 文件夹。不是文件。
或者还有其他方法可以持久化配置吗?
【问题讨论】:
-
在我的例子中,我简单地在创建容器/卷之前“触摸”一个空文件。如果文件不存在,则创建一个目录。
标签: docker docker-compose