我试图将一个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:
Run Code Online (Sandbox Code Playgroud)
这导致错误:
我用一个给定的路径尝试了它,作为一个装载的音量.
/src/docker/myapp/upload:/var/www/html/upload
/src/docker/myapp/upload:/var/www/html/config.php
Run Code Online (Sandbox Code Playgroud)
但是两种方式都不起作用.使用已安装的卷,我看到上传已创建.
但随后失败了
/var/www/html/config.php \\"导致\\"不是目录\\"\""
如果我用/src/docker/myapp/upload/config.php:/var/www/html/config.php试试
Docker创建上传文件夹,然后创建config.php文件夹.不是文件.
或者还有另一种方法来保持配置?
描述
我通过Hyper-V在Windows 10上使用Docker版本1.12.5,并希望将容器可执行文件用作当前路径中的命令.我构建了一个运行正常的Docker镜像,但是我在安装当前路径时遇到了问题.我们的想法是创建一个别名并执行一个docker run --rm [...]命令,以便它可以在当前目录中的系统范围内使用.
建立
我有一个驱动器E,文件夹"test",并在那里有一个名为"Windows主机上的文件夹"的文件夹,以显示该命令正在运行.Dockerfile创建目录/data,将其定义为VOLUME和WORKDIR.
有E:\test在PowerShell中的当前目录和绝对路径执行多克尔命令,我可以看到的内容E:\test:
PS E:\test> docker run --rm -it -v E:\test:/data mirkohaaser/docker-clitools ls -la
total 0
drwxr-xr-x 2 root root 0 Jan 4 11:45 .
drwxr-xr-x 2 root root 0 Jan 5 12:17 folder on windows host
Run Code Online (Sandbox Code Playgroud)
问题
我想使用当前目录而不是绝对符号.由于不同的错误消息,我无法在卷中使用pwd:
试试($ pwd)
PS E:\test> docker run --rm -it -v ($pwd):/data mirkohaaser/docker-clitools ls -la
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error parsing reference: ":/data" is not a valid repository/tag.
See 'C:\Program Files\Docker\Docker\Resources\bin\docker.exe …Run Code Online (Sandbox Code Playgroud)