从正式的WordPress图像挂载单个文件时,Docker(撰写)无法构build容器
我正在遇到挂载文件的问题,与工作相当好的目录相反。 具体问题与WordPress的官方形象和文件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 /被创build,但作为目录,而不是一个文件。
有时候错误可能是:
ERROR: Cannot start container <container id>: [9] System error: not a directory
如果我注释的是挂载wp-config.php文件的行,一切都按预期工作。
docker检查给出正确的信息:
"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运行而不是docker-compose (等同的行为/结果)
- 而不是./src/wordpress使用绝对path,通过命名或使用$ PWD
- 在主文件夹之外移动项目
- 注释wp-config.php文件的卷的行,创build容器,然后停止它,取消注释以前注释的行,并再次启动
不太确定,但在入口点脚本上观察时,如果在Wordpress tar归档文件解压缩到/ var / www / html之前执行了挂载操作,那么可能是wp-config.php文件(或任何其他文件)无法find的原因,因此安装。 有了目录,看起来不是问题。
你可能会尝试一些更灵活的方法,build立你自己的形象如下:
在你的docker-compose.yml中 :
web: build: . ports: - "80:80" volumes: - ~/workspace/wordpress-dir:/var/www/html 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
然后在Dockerfile中写入相同的文件夹,如下所示:
FROM wordpress # Copying wp-content dir files COPY src/wordpress/wp-content/* /var/www/html/wp-content/
之后, 你需要build立之前,以避免wordpress入口点replace,只是第一次 ,如下所示:
docker-compose build docker-compuse up
我认为这种方式来build立你的容器给你更多的灵活性,也提供了一个真正的封装你的WordPress的应用程序的内容。
问候
- Docker无法初始化
- 连接到docker-compose mysql容器会拒绝访问,但docker运行相同的映像不会
- Dockered Django + Celery(`celeryd`和`celerybeat`),任务被执行,但数据库(SQLite)不被修改。 哪里不对?
- docker-compose up不会创build最新的标签,或者docker版本控制是如何工作的
- Docker,引用一个不同的容器。 使用php命令调用mysqldump
- 图片名称,Docker-Compose中的Docker Syslog标签中的容器名称
- docker-compose – 无法连接到MySQL数据库
- 如何使用JavaScript获取Docker容器的名称?
- 强制Docker在主机而不是来宾中安装代码卷