DOCKER - LAMP堆栈问题 - 预制图像

时间:2016-12-28 23:48:02

标签: image docker

尝试使用docker设置LAMP堆栈, 并找到并尝试使用https://hub.docker.com/r/linode/lamp/

但我无法找到并且不知道如何访问链接到域的文件 或者如何从example.com等更改域名。

我认为我真正的问题是如何更改文件或重建图像 来自其他人。

2 个答案:

答案 0 :(得分:1)

首先,考虑在单独的容器中使用microservices。这将提供以下优势:

  • 故障遏制
  • 易于升级
  • 消除对单一技术堆栈的长期承诺
  • 易于扩展
  • 系统弹性
  • ...

现在Docker的创建考虑了microservices,因此对于LAMP Stack,我建议在容器中使用Apache+PHP,在另一个容器中使用mysql。要使容器彼此通信,请创建一个userdefined网络并将两个容器放入其中。

现在回到你的问题:

您可以使用3个选项来使用自定义配置文件:

  1. 您需要在创建容器时安装配置文件(推荐):

    sudo docker run -d --name my-apache -v /path/to/custom/httpd.conf:/usr/local/apache2/conf/httpd.conf httpd
    
  2. 请注意,此示例使用library中的apache2(官方)docker hub图片,您应参阅图片创建者关于自定义图片的说明。

    1. 您可以手动编辑正在运行的容器内的配置文件,并commit将其作为新图像。

      sudo docker commit my-apache myrepository/myimagename:tag
      sudo docker run -d myrepository/myimagename:tag
      
    2. 通过Dockerfile创建自己的图像,并使用FROM <base image>指令。

答案 1 :(得分:1)

首先,我想提一下,我不是这个图像+方法的忠实粉丝,因为它捆绑了多个微服务。我建议使用apache2的容器,mysql的容器等。

但是对于LAMP的设置。我使用网站上提供的documentation。 我的路径/xx/test/index.html包含一些HTML。我将在容器端口上映射容器的端口+将我的文件挂载到容器中的右侧文件夹。

docker run -p 80:80 -t -i -v /root/test/:/var/www/example.com/public_html/ linode/lamp /bin/bash

我正在使用-ti并启动一个bash会话。在这里他们正在启动apache2 + mysql服务。 (这是官方文件的方法。不是我的。这是一种奇怪的方法):

root@35d00285b625:/# service apache2 start
 * Starting web server apache2                                                                                                                               *
root@35d00285b625:/# service mysql start
 * Starting MySQL database server mysqld                                                                                                             [ OK ]
 * Checking for tables which need an upgrade, are corrupt or were
not closed cleanly.

启动服务后,您可以按ctrl + p然后按ctrl + q退出容器。现在你可以检查你的server-ip:80来检查你的HTML代码。如果要替换example.conf,也可以挂载自己的apache2配置。

如果你想改变图像中的foldernames,我建议你创建自己的dockerfile,它以:

开头
FROM docker pull linode/lamp
RUN changes..