我遇到了挂载文件的问题,与目录非常相似 . 具体问题与Wordpress's official image和文件wp-config.php(或任何其他)有关 .
这是 docker-compose.yml 文件的内容:
web:
image: wordpress
ports:
- "80:80"
volumes:
- ./src/wordpress/wp-content:/var/www/html/wp-content
- ./src/wordpress/wp-config.php:/var/www/html/wp-config.php
environment:
WORDPRESS_DB_NAME: dummyname
links:
- db:mysql
db:
image: mysql
ports:
- "3306:3306"
volumes:
- mysql-data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: dummypass
当我运行命令 docker-compose up 或 docker run 输出是相同的:
WordPress not found in /var/www/html - copying now...
WARNING: /var/www/html is not empty - press Ctrl+C now if this is an error!
+ ls -A
wp-config.php
+ sleep 10
Complete! WordPress has been successfully copied to /var/www/html
sed: couldn't edit wp-config.php: not a regular file
在这两种情况下,都会创建wp-config.php /,但是作为目录而不是文件 .
有时错误可能是:
ERROR: Cannot start container <container id>: [9] System error: not a directory
如果我评论挂载wp-config.php文件的行,一切都按预期工作 .
docker inspect 给出正确的信息:
"HostConfig": {
"Binds": [
"/home/dummyuser/projects/dummyproject/src/wordpress/wp-config.php:/var/www/html/wp-config.php:rw"
],
...
"Mounts": [
{
"Source": "/home/dummyuser/projects/dummyproject/src/wordpress/wp-config.php",
"Destination": "/var/www/html/wp-config.php",
"Mode": "rw",
"RW": true,
"Propagation": "rprivate"
},
{
"Name": "b8649d2edbfb043a05bce96622fbbc1c10b24b9f65736407efe961c3ec550b7a",
"Source": "/var/lib/docker/volumes/b8649d2edbfb043a05bce96622fbbc1c10b24b9f65736407efe961c3ec550b7a/_data",
"Destination": "/var/www/html",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
],
环境:
Linux 3.19.0-56-generic #62~14.04.1-Ubuntu SMP Fri Mar 11 11:03:15 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
Docker version 1.10.3, build 20f81dd
docker-compose version 1.5.2, build 7240ff3
我尝试过的事情,并没有得到任何结果:
-
使用 docker run 而不是 docker-compose (行为/结果相同)
-
而不是./src/wordpress使用绝对路径,通过命名或使用 $PWD
-
在 home 文件夹之外移动项目
-
评论wp-config.php文件的行,创建容器,然后停止它,取消注释以前注释的行,然后再次启动它
不太确定,但是当在entrypoint script上观看时,如果在将Wordpress tar存档提取到/ var / www / html之前执行安装,这可能是无法找到wp-config.php文件(或任何其他文件)的原因,因此安装 . 对于目录,似乎这不是问题 .
1 回答
您可以尝试更灵活的方法,构建您自己的图像,如下所示:
在你的 docker-compose.yml :
然后在同一文件夹中写入 Dockerfile 如下:
之后 You need to build before up, to avoid wordpress-entrypoint replacements, just for the first time ,如下:
我认为这种构建容器的方式可以为您提供更多的灵活性,并为您的wordpress应用程序内容提供真正的封装 .
问候