用于存档目的的最简单 mac docker 设置是什么?
What's the simplest mac docker setup for archival purposes?
我的计算机上有一堆旧站点(wordpress/mysql/php、ruby 1.x/sqlite 等),我想确保可以轻松访问它们未来,而不必破坏我的环境。
Docker 似乎是这项任务的完美人选,但我已经多次尝试解决这个问题,并意识到是时候寻求专业帮助了(这让我来到这里)。
我浪费了很多时间来弄乱这个东西,并且对深度有点不知所措。起初(在 wp/mysql 问题的情况下),我试图创建两个不同的图像(一个 wordpress/php 一个,一个 mysql 一个)并将它们 link 在一起,这符合我的 Doing It The Right Way™ 程序员心态。
但我的 UX 心态已经胜出,我放弃了正确的方式™,转而以最简单的方式让这个东西工作,这样未来的我(谁会忘记所有这些 docker 我完成这个任务后的知识)也许能够再次弄清楚。
所以这就是我想要的: 一个 docker 设置,我可以将它与导出的 mysql 数据库和一个 wordpress 站点一起放在一个文件夹中,所以当我启动那个 badboy 时——boom——我正在浏览一些旧网站,这些网站在 2005 年很有意义,但现在已经毫无意义了。
知道我在说什么吗?我能完成这项工作的最简单、面向未来的方法是什么?如果我想编辑它们,是否可以将 data/files 保留在容器之外?我正在使用 Docker For Mac.
Docker 用于 Mac 和很多 PHP 文件(wordpress、Symfony)作为挂载资源 don't like each other ... if You don't want to make some fancy tricks with docker-sync plus some other tricks (since databases may be slow as well).
我的建议 - 如果您想要简单 fire-and-forget 是可以使用 Vagrant 设置一个虚拟机来为所有站点提供服务?为此,您可以使用 puphpet.com 轻松单击您的机器。甚至可以将 SQL 文件标记为导入...然后查看 config.yml 文件 您将知道如何在功能中添加其他主机,然后您只需启动 vagrant provision 即可设置它.
如果每个站点需要一些旧的 PHP 或不同的 environments/setups,就会出现问题。不幸的是 Docker Mac 目前还不是万无一失的 fire-and-forget 解决方案。
听起来您想要的是真正通用的东西,它适用于您拥有的所有网站。这可能很棘手,因为 Docker 本质上是 而不是 通用的。您通常没有包含所有工具(PHP、Ruby 等)到 运行 一切的 docker 图像。您通常只将需要的内容构建到映像中。
话虽这么说,但仍有可能完成您所要求的事情,我想我可以为您指明正确的方向。 official 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 容器。
- 在 wordpress 容器中安装
./
到 /var/www/html
。这意味着它将为您当前目录中的 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
即可将在容器中 运行ning Wordpress。如果需要恢复数据库转储,可以 cat dump.sql | mysql -u root -ppassword -h 127.0.0.1 WORDPRESS
。您可以在 localhost:8080
访问该站点。通过在您的项目中放置一个这样的 docker-compose.yml
文件,可以非常快速地为它们启动一个容器。
现在,由于像这样的 Whosebug 答案的范围非常有限,您可能会 运行 遇到一些我没有在此答案中涵盖的问题。但是,如果您愿意花一点时间更多地了解 Docker(其实并没有那么复杂),这对您来说可能是一个很好的解决方案。
我的计算机上有一堆旧站点(wordpress/mysql/php、ruby 1.x/sqlite 等),我想确保可以轻松访问它们未来,而不必破坏我的环境。
Docker 似乎是这项任务的完美人选,但我已经多次尝试解决这个问题,并意识到是时候寻求专业帮助了(这让我来到这里)。
我浪费了很多时间来弄乱这个东西,并且对深度有点不知所措。起初(在 wp/mysql 问题的情况下),我试图创建两个不同的图像(一个 wordpress/php 一个,一个 mysql 一个)并将它们 link 在一起,这符合我的 Doing It The Right Way™ 程序员心态。
但我的 UX 心态已经胜出,我放弃了正确的方式™,转而以最简单的方式让这个东西工作,这样未来的我(谁会忘记所有这些 docker 我完成这个任务后的知识)也许能够再次弄清楚。
所以这就是我想要的: 一个 docker 设置,我可以将它与导出的 mysql 数据库和一个 wordpress 站点一起放在一个文件夹中,所以当我启动那个 badboy 时——boom——我正在浏览一些旧网站,这些网站在 2005 年很有意义,但现在已经毫无意义了。
知道我在说什么吗?我能完成这项工作的最简单、面向未来的方法是什么?如果我想编辑它们,是否可以将 data/files 保留在容器之外?我正在使用 Docker For Mac.
Docker 用于 Mac 和很多 PHP 文件(wordpress、Symfony)作为挂载资源 don't like each other ... if You don't want to make some fancy tricks with docker-sync plus some other tricks (since databases may be slow as well).
我的建议 - 如果您想要简单 fire-and-forget 是可以使用 Vagrant 设置一个虚拟机来为所有站点提供服务?为此,您可以使用 puphpet.com 轻松单击您的机器。甚至可以将 SQL 文件标记为导入...然后查看 config.yml 文件 您将知道如何在功能中添加其他主机,然后您只需启动 vagrant provision 即可设置它.
如果每个站点需要一些旧的 PHP 或不同的 environments/setups,就会出现问题。不幸的是 Docker Mac 目前还不是万无一失的 fire-and-forget 解决方案。
听起来您想要的是真正通用的东西,它适用于您拥有的所有网站。这可能很棘手,因为 Docker 本质上是 而不是 通用的。您通常没有包含所有工具(PHP、Ruby 等)到 运行 一切的 docker 图像。您通常只将需要的内容构建到映像中。
话虽这么说,但仍有可能完成您所要求的事情,我想我可以为您指明正确的方向。 official 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 容器。
- 在 wordpress 容器中安装
./
到/var/www/html
。这意味着它将为您当前目录中的 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
即可将在容器中 运行ning Wordpress。如果需要恢复数据库转储,可以 cat dump.sql | mysql -u root -ppassword -h 127.0.0.1 WORDPRESS
。您可以在 localhost:8080
访问该站点。通过在您的项目中放置一个这样的 docker-compose.yml
文件,可以非常快速地为它们启动一个容器。
现在,由于像这样的 Whosebug 答案的范围非常有限,您可能会 运行 遇到一些我没有在此答案中涵盖的问题。但是,如果您愿意花一点时间更多地了解 Docker(其实并没有那么复杂),这对您来说可能是一个很好的解决方案。