DOCKER – LAMP堆栈问题 – Premade Image

试图设置与docker的LAMP堆栈,并发现并尝试使用https://hub.docker.com/r/linode/lamp/

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

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

首先我想提一下,我不是这个形象+方法的大粉丝,因为它捆绑了多个微服务。 我会build议使用容器为apache2,一个容器为mysql等

但是对于LAMP的设置。 我正在使用网站上提供的文档 。 我有一个path/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代码。 如果你想replaceexample.conf,你也可以挂载你自己的apache2configuration。

如果你想改变图像中的文件夹名称,我build议创build你自己的dockerfile,

 FROM docker pull linode/lamp RUN changes.. 

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

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

现在Docker是在考虑microservices下创build的,所以对于LAMP Stack ,我build议在容器中使用Apache+PHP ,在另一个容器中使用mysql 。 为了让您的容器与彼此沟通,请创build一个用户定义的networking,并将两个容器放入其中。

现在回到你的问题:

您有3个使用自定义configuration文件的选项:

  1. 创build容器时需要安assembly置文件(推荐):

     sudo docker run -d --name my-apache -v /path/to/custom/httpd.conf:/usr/local/apache2/conf/httpd.conf httpd 

请注意,此示例使用的是docker hub library (官方) apache2映像,您应该咨询映像创build者的自定义映像指示信息。

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

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