Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker多级构建不保留RUN命令的结果_Docker_Docker Multi Stage Build - Fatal编程技术网

Docker多级构建不保留RUN命令的结果

Docker多级构建不保留RUN命令的结果,docker,docker-multi-stage-build,Docker,Docker Multi Stage Build,我正在使用docker engine 17.05.0~ce-0~ubuntu xenial构建此docker文件: FROM wordpress:apache as codebase FROM wordpress:cli as cli COPY --from=codebase /usr/src/wordpress /var/www/html # Create a config RUN wp --path=/var/www/html config create --dbname=dbnam

我正在使用docker engine 17.05.0~ce-0~ubuntu xenial构建此docker文件:

FROM wordpress:apache as codebase

FROM wordpress:cli as cli 
COPY --from=codebase /usr/src/wordpress /var/www/html

# Create a config 
RUN wp --path=/var/www/html config create --dbname=dbname --dbuser=dbuser --skip-check \
 && ls /var/www/html/wp-config.php

RUN ls /var/www/html/wp-config.php
但产出并不像预期的那样。我从wordpress:apache复制的代码已正确添加到/var/www/html,但wp-config.php仅在实际构建步骤中出现,而不在生成的图像中。我不明白我做错了什么。在构建时,它的结尾如下所示:

$ docker build -t wptest . --no-cache
Sending build context to Docker daemon  2.048kB
Step 1/5 : FROM wordpress:apache as codebase
 ---> 1d3cc82944da
Step 2/5 : FROM wordpress:cli as cli
 ---> ee57985dea6f
Step 3/5 : COPY --from=codebase /usr/src/wordpress /var/www/html
 ---> e10d62f3d7bc
Removing intermediate container e09a35e05108
Step 4/5 : RUN wp --path=/var/www/html config create --dbname=dbname --dbuser=dbuser --skip-check  && ls /var/www/html/wp-config.php
 ---> Running in 8b2b3e98163e
Success: Generated 'wp-config.php' file.
/var/www/html/wp-config.php
 ---> b0934cfed497
Removing intermediate container 8b2b3e98163e
Step 5/5 : RUN ls /var/www/html/wp-config.php
 ---> Running in cda6a5c16fb5
ls: /var/www/html/wp-config.php: No such file or directory
The command '/bin/sh -c ls /var/www/html/wp-config.php' returned a non-zero code: 1
为什么在第一次运行中创建的wp-config.php在下一步中不可用,而我用COPY命令放在那里的数据却保留在那里


(如果你想知道我想要实现什么,这只是一个MCVE。)

声明
卷/var/www/html
。一旦
VOLUME
指令运行;您的
COPY
RUN
语句试图将内容添加到该目录中,但没有任何效果。

副本有效果。如果我运行图像,在/var/www/html中有文件,它只是缺少wp配置。如果我运行wordpress:cli映像,/var/www/html为空。@TimStoop copy可以工作,因为它直接在映像文件系统层上运行。run命令不起作用,因为它在临时容器中运行,并且该临时容器在映像文件系统上挂载了一个匿名卷,您所做的更改将被丢弃。这很有意义,谢谢。。。我应该把这个答案标为正确答案吗?我不能这样评论:/@timsoop-David让你得到了90%的回报,给他一点荣誉吧。