当从官方Wordpress镜像挂载单个文件时,Docker(compose)无法构建容器。

2 人关注

我遇到了挂载文件的问题,与挂载目录的问题相反,挂载文件的工作很好。具体问题是与 Wordpress的官方图像 和文件 wp-config.php (或其他)有关。

下面是 docker-compose.yml 文件的内容。

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 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来实现。
  • 将项目移出文件夹
  • 评论wp-config.php文件中的体积行,创建容器,然后停止它,取消之前的评论行,并再次启动它。
  • 不太确定,但在观察入口脚本时,如果在Wordpress tar归档文件被解压到/var/www/html之前进行挂载,这可能是wp-config.php文件(或任何其他文件)无法被找到并因此挂载的原因。对于目录来说,这似乎不是一个问题。

    2 个评论
    在你的docker-compose.yml文件中,你是否试图将文件装入Docker容器?
    你可能要稍微澄清一下标题,因为在Docker 构建 过程中没有 挂载
    linux
    wordpress
    docker
    docker-compose
    a.ilic
    a.ilic
    发布于 2016-03-18
    1 个回答
    JorelC
    JorelC
    发布于 2016-03-30
    0 人赞同

    你可以尝试更灵活一点的方法,建立你自己的形象,如下所示。

    在你的 docker-compose.yml 中。

    build: . ports: - "80:80" volumes: - ~/workspace/wordpress-dir:/var/www/html environment: WORDPRESS_DB_NAME: dummyname links: - db:mysql image: mysql ports: - "3306:3306" volumes: - mysql-data:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: dummypass

    然后在同一文件夹中写入 Docker文件 ,如下所示。

    FROM wordpress
    # Copying wp-content dir files
    COPY src/wordpress/wp-content/* /var/www/html/wp-content/
    

    之后,你需要在之前建立,以避免wordpress-entrypoint的替换,只是为了第一次,如下所示。