macos - 用于存档的最简单的mac docker设置是什么?

标签 macos docker docker-compose docker-for-mac

我的计算机上有一堆旧站点(wordpress / mysql / php,ruby 1.x / sqlite等),我希望确保将来可以轻松访问这些站点而不必破坏环境。

Docker似乎是完成此任务的理想人选,但我已经尝试过多次,并意识到是时候寻求专业帮助了(这让我来了)。

我已经花了太多时间弄乱了这个东西,而深度却让我有些不知所措。刚开始时(在wp / mysql问题的情况下),我试图创建两个不同的图像(一个wordpress / php一个和一个mysql一个)并将它们链接在一起,这吸引了我的程序员对Doing It的态度。 Right Way™。

但是我的UX心态赢了,我放弃了Right Way™,转而以一种最简单的方式来工作,以便将来我(一旦我完成此任务,他会忘记所有这些Docker知识)再次弄清楚。

这就是我想要的:一个Docker设置,可以将它与导出的mysql数据库和wordpress网站一起放在一个文件夹中,因此,当我启动该badboy时,我正在浏览一些旧网站,在2005年意义重大,而现在毫无意义。

知道我在说什么吗?完成这项工作的最简单,最适合 future 的方法是什么?如果我要编辑数据/文件,是否可以将其保存在容器之外?我正在使用Docker For Mac。

最佳答案

听起来您想要一种真正通用的东西,它将对您拥有的所有网站都起作用。这可能很棘手,因为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即可在容器中运行Wordpress。如果需要还原数据库转储,则可以cat dump.sql | mysql -u root -ppassword -h 127.0.0.1 WORDPRESS。您可以通过localhost:8080访问该站点。通过将这样的docker-compose.yml文件放入您的项目中,可以很快为它们启动一个容器。

    现在,因为这样的StackOverflow答案的范围非常有限,所以您可能会在这里和那里遇到一些麻烦,而我在此答案中并未涉及。但是,如果您愿意花一点时间来学习更多有关Docker的知识(实际上并不那么复杂),那么这对您来说可能是一个不错的解决方案。

    关于macos - 用于存档的最简单的mac docker设置是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41896697/

    相关文章:

    java - 如何在 OS X 上的 Swing 中启用 LCD 子像素抗锯齿?

    java - 如何将永久 CLASSPATH 添加到 Mac OS El Capitan 上的终端?

    docker - Golang Docker SDK 镜像构建失败并出现 COPY

    python - docker : How to export/save classifying results outside a Docker (tensorflow) box?

    mongodb - 重新创建 MongoDB 容器不会重新运行 docker-entrypoint-initdb.d 中的 config.js 文件

    docker - 如何借助docker compose正确设置golang应用的第三方库?

    macos - Fish Interactive Shell 完整路径

    macos - Lesscss 命令行编译器 Lessc

    c# - Docker容器中的.Net Core 3.1应用程序环境变量不起作用

    Docker Swarm 部署本地 Dockerfile