听起来您想要一些真正通用的东西,它适用于您拥有的所有网站。这可能很棘手,因为 Docker 本质上不是通用的。您通常没有包含所有工具(PHP、Ruby 等)的 docker 映像来运行所有内容。您通常只将您需要的内容构建到映像中。
话虽如此,仍然有可能做一些你所要求的事情,我想我可以让你指出正确的方向。官方的Wordpress Docker 映像应该能够运行您的 Wordpress 站点。实际上,您使用单独的 MySQL 映像走在正确的轨道上,这很容易通过docker-compose
.
你的 docker-compose.yml 文件看起来像这样:
version: '3'
services:
wordpress:
image: wordpress:4-php5.6-apache
ports:
- "8080:80"
volumes:
- ./:/var/www/html
environment:
WORDPRESS_DB_HOST: mysql
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: password
WORDPRESS_DB_NAME: wordpress
mysql:
image: mariadb:10.1
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: wordpress
简要总结一下它的作用:
- 创建 2 个 Docker 容器,一个用于 Wordpress,一个用于 MySQL。
- 将来自 127.0.0.1:8080 的请求转发到端口 80 上的 Wordpress 容器。
- 挂载
./
到/var/www/html
wordpress 容器中。这意味着它将为您当前目录中的 Wordpress 提供服务。
- 配置环境变量,使其知道如何连接到数据库。
- 准备一个 MySQL Docker 容器。
- 转发
127.0.0.1:3306
到容器上的 3306。所以你可以做到mysql -u root -ppassword -h 127.0.0.1
。
现在,如果您在要服务的 Wordpress 目录中创建一个docker-compose.yml
类似于上述文件的文件,您可以简单地docker-compose up
在该目录中运行,您将在容器中运行 Wordpress。如果您需要恢复数据库转储,您可以cat dump.sql | mysql -u root -ppassword -h 127.0.0.1 WORDPRESS
. 您可以访问该网站localhost:8080
。通过将这样的docker-compose.yml
文件放入您的项目中,为它们创建一个容器会非常快。
现在,因为像这样的 StackOverflow 答案的范围非常有限,你可能会在这里和那里遇到一些我在这个答案中没有涉及的问题。但是如果你愿意花一点时间来学习更多关于 Docker 的知识(它真的没有那么复杂),这对你来说可能是一个很好的解决方案。