我刚开始接触Docker,对于专业的WordPress开发实践,我还是个新手。我想建立一个Docker开发环境(在我的Mac上),以便我可以自定义WordPress主题开发。
假设您之前已经这样做过,并且已经在使用Docker,您是如何设置的?Dockerfile和docker组成什么。yml看起来像?我相信这之前已经做过了。如果已经有一行命令可以为您设置这一点,我不会感到惊讶。
Update: 我把这个话题缩小到以下问题:
我刚开始接触Docker,对于专业的WordPress开发实践,我还是个新手。我想建立一个Docker开发环境(在我的Mac上),以便我可以自定义WordPress主题开发。
假设您之前已经这样做过,并且已经在使用Docker,您是如何设置的?Dockerfile和docker组成什么。yml看起来像?我相信这之前已经做过了。如果已经有一行命令可以为您设置这一点,我不会感到惊讶。
Update: 我把这个话题缩小到以下问题:
我将发布一个部分答案来开始讨论,希望得到一些有用的评论来填补空白或其他答案。。。
boot2docker
, 它将在Linux虚拟机中运行Docker。您可以安装boot2docker
使用Homebrew:brew install boot2docker
安装完成后,设置并启动boot2docker:boot2docker init
boot2docker start
接下来,我们需要运行一个命令来设置一些环境变量,以便docker compose能够在boot2docker VM中找到docker。eval "$(boot2docker shellinit)"
您可能需要添加将变量导出到~/.bash_profile
这样,您就不必每次打开新的终端窗口时都运行该命令。docker-compose
(原名为fig
) 这使得定义Docker容器之间的关系非常容易。您也可以使用自制软件进行安装:brew install docker-compose
第3步:创建docker compose。yml有一个official WordPress Docker image 在Docker注册表中。它包括一些关于手动启动Docker的信息,这些信息包含使Docker正常工作所需的所有命令行标志。据我所知,你可以跳过所有这些,因为我们将使用docker-compose
. 在您将处理WordPress主题的目录中,创建docker-compose.yml
包括以下内容:wordpress:
image: wordpress
links:
- db:mysql
ports:
- 8080:80
volumes:
- .:/var/www/html/wp-content/themes/my-theme-name
db:
image: mariadb
environment:
MYSQL_ROOT_PASSWORD: example
Thevolumes
配置将当前目录中的主题文件链接到Docker容器中的新主题目录。docker-compose up
您将设置两个Docker容器(“wordpress”和“db”),运行wordpress的安装。docker-compose.yml
配置指定我们正在将端口80转发到端口8080。而且boot2docker
在特定IP地址上运行其VM。因此,为了找出URL,我们需要使用boot2docker ip
命令:open http://$(boot2docker ip):8080
问题现在我已经安装并运行了容器,我有几个问题。。。是否有一种自动设置boot2docker环境变量的方法,而不是复制和粘贴中列出的导出boot2docker shellinit
?
当我在Rails应用程序上工作时,我喜欢使用Pow 这样我就可以使用.dev
域,而不是使用特定的端口/IP。如何配置系统(或Pow),以便使用http://mysite.dev?
我的首选解决方案是将Composer与Docker结合使用。Docker处理环境,Composer处理依赖项,其中包括主题、插件和我可能需要的任何其他包。
以下是我自己的本地Docker设置:
https://github.com/alexmacarthur/wp-skateboard
这里有一个分支,它使用Composer下载主题并将其放在我的themes
目录:https://github.com/alexmacarthur/wp-skateboard/tree/starter-theme-underscores
我遵循wordpress codex网站上关于通过插件创建管理主题的说明。我激活了插件,但我的样式表没有包含在<head>.. 这是我的代码:add_action( \'admin_init\', \'kd_plugin_admin_init\' ); add_action( \'admin_menu\', \'kd_plugin_admin_menu\' ); function kd_plugin_admin_init() { /* Register