因此,我经常发现,Wordpress构建是从几乎相同的基础开始-具有相同的插件等(例如,当我们建立商店时是WooCommerce等)。我们正在寻找的是使用Docker进行本地开发并将其部署到生产中。
但是,我们遇到的问题是从我们的基础开始构建的,然后能够通过添加的插件目录在本地计算机上找到映射的开发目录。本质上,我们将维护所需的插件,并确保它们与最新稳定的Wordpress版本一起使用,并且将拉下最新的Wordpress Docker映像,因此我们不必太过密切地维护这一方面... < / p>
Dockerfile :
FROM wordpress:php7.1-apache
COPY wordpress-docker-build/wordpress-plugins /var/www/html/wp-content/plugins
docker-compose.yml (类似):
services:
wp:
build: .
ports:
- "8000:80"
environment:
WORDPRESS_DB_PASSWORD: qwerty
volumes:
- /Users/username/Developer/repos/my-wordpress-site:/var/www/html
mysql:
image: "mysql:5.7"
environment:
MYSQL_ROOT_PASSWORD: qwerty
从本质上讲,我们发现的是从volumes
中删除docker-compose.yml
时得到的-正是我们想要的插件。当我们将卷映射添加到wordpress服务时,仅安装基本的wordpress映像并将其映射到...没有插件。
我们已经尝试了所有的教程,文档,反复试验等方法,但是随后出现了很多麻烦……
答案 0 :(得分:0)
音量不能那样工作。当您将某物装入/var/www/html
的容器中时,它将替换该目录及其中的所有内容。
如果没有从主机映射的/Users/username/Developer/repos/my-wordpress-site/wp-content/plugins
,则在挂载后它不会存在于容器中。该支架不是附加的,它可以完全替换容器中的主机,而不是主机上的主机。
在这方面,装箱量是一条从主机到集装箱的单向路,具有上面讨论的含义。您不能使用卷从容器中检索文件并在主机上进行编辑。与之最接近的是但是,我们遇到的问题是从我们的基础开始构建的,然后能够通过添加的插件目录在本地计算机上找到映射的开发目录。
docker cp
命令,但这在这种情况下没有帮助。
完成绑定所需的最简单方法是使用绑定安装将插件从主机放置到正在运行的容器中,方法是将插件放置在主机上的/Users/username/Developer/repos/my-wordpress-site/wp-content/plugins
中,或者添加仅如果更方便,则将目标定位到插件目录(/some/other/dir:/var/www/html/wp-content/plugins
)。
此外,如果COPY仅存在于您的Dockerfile中,以支持每个开发人员自己的努力来开发插件,而不是构建用于传递或部署到其他环境的映像,则可以删除该行。现在,绑定挂载已覆盖了该绑定,如果您打算使用绑定挂载在实时容器中编辑插件,那么将来将会使用它。
编辑:误解了OP的困境