我的计算机上有一堆旧网站(wordpress / mysql / php,ruby 1.x / sqlite等),我希望将来可以轻松访问,而不必捣乱我的网站环境。
Docker似乎是完成这项任务的最佳人选,但我已经尝试多次绕过它,并意识到是时候寻求专业帮助了(这让我来到这里)。
我已经浪费了太多时间搞乱这件事,并且已经被深度轻微压倒了。起初(在wp / mysql问题的情况下),我试图创建两个不同的图像(一个wordpress / php一个,一个mysql一个)并将它们链接在一起,这吸引了我的程序员心态做到这一点Right Way™。
但是我的用户体验已经赢了,我放弃了Right Way™,转而让这件事以最简单的方式运作,以便未来我(谁会忘记所有这些码头工作者的知识我完成这项任务后可能会再次弄明白。
所以这就是我想要的东西:我可以将一个docker设置放在一个文件夹中,同时还有一个导出的mysql数据库和一个wordpress网站,所以当我启动那个badboy- 热潮时 - 我正在浏览一些在2005年很有意义的旧网站,现在没有任何意义。
知道我在说什么吗?我能做到的最简单,面向未来的方法是什么?在我想编辑它们的情况下,是否可以将数据/文件保存在容器之外?我正在使用Docker For Mac。
答案 0 :(得分:1)
听起来你想要一些非常通用的东西可以用于你拥有的所有网站。这可能很棘手,因为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
简要概述:
./
安装到/var/www/html
。这意味着它将从您当前的目录中提供Wordpress。127.0.0.1:3306
转发至容器上的3306。所以你可以做mysql -u root -ppassword -h 127.0.0.1
。现在,如果您创建一个名为docker-compose.yml
的文件,类似于您要提供的Wordpress目录中的文件,您只需在该目录中运行docker-compose up
即可运行在容器中的Wordpress。如果需要还原数据库转储,可以cat dump.sql | mysql -u root -ppassword -h 127.0.0.1 WORDPRESS
。您可以localhost:8080
访问该网站。通过在您的项目中放置这样的docker-compose.yml
文件,可以很快为它们启动容器。
现在,因为像这样的StackOverflow答案的范围非常有限,你可能会遇到一些障碍,我在这个答案中没有涉及。但如果您愿意花一点时间来了解更多关于Docker的知识(它真的不那么复杂),这对您来说可能是一个很好的解决方案。
答案 1 :(得分:0)
Docker for Mac和许多PHP文件(wordpress,Symfony)作为已安装资源don't like each other ...如果您不想使用docker-sync加上其他一些技巧({{3 }})。
我的建议 - 如果您想轻松点火,可能会使用Vagrant来设置一个可以服务所有网站的虚拟机吗?您可以使用since databases may be slow as well轻松点击您的计算机。甚至有可能将SQL文件标记为导入...然后查看config.yml文件您将知道如何在功能中添加其他主机,然后您只需触发流浪汉配置以便将其设置为。
如果您需要一些旧的PHP或每个站点的不同环境/设置,则会出现问题。不幸的是,Docker for Mac现在并不是万无一失的解决方案。