泊坞窗 - LAMP堆栈问题 - 预制的图片

泊坞窗 - LAMP堆栈问题 - 预制的图片

问题描述:

试图建立与码头工人, 一个LAMP堆栈,发现并试图用https://hub.docker.com/r/linode/lamp/泊坞窗 - LAMP堆栈问题 - 预制的图片

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

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

+0

使用['运行-v'(https://docs.docker.com/引擎/参考/运行/#/卷共享文件系统)在docker容器中装载主机目录。来自主机的挂载目录中的任何更改将立即应用于容器内。 –

首先我想提一提,我不是这个图像+方法的忠实粉丝,因为它捆绑了多个微服务。我建议使用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服务。 (这是官方文档的方式不是我这是一个奇怪的做法。):

[email protected]:/# service apache2 start 
* Starting web server apache2                                * 
[email protected]:/# 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.. 
+0

感谢您的意见。这是我寻找的东西的一部分。 – user2453885

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

  • 故障包容
  • 升级的方便性
  • 消除长期致力于单一的技术栈
  • 易于扩展
  • 系统弹性
  • ...

现在,Docker的创建时间为microservices记住,因此对于您的LAMP Stack,我建议在容器中使用Apache+PHP,在另一个容器中使用mysql。为了让您的容器与彼此沟通,请创建一个网络并将两个容器放入其中。

现在回到你的问题:

你必须使用你的自定义配置文件有3个选项:

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

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

请注意本例使用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>指令。

开始=“2”>
+0

谢谢。但是,微服务不是一种解决高活动大规模解决方案而不是小规模项目的手段吗?如果只有100人看到您的网站等,那么开销是否值得呢? – user2453885

+1

它是一种折衷,如果它适用于100位访问者,我会参加微服务。因为资源开销很小。使用微服务架构可以减少管理开销。对升级场景进行映像,您正在使用自定义灯图像,如果要更新mysql而不是apache,则需要创建自己的自定义映像,但使用微服务+ docker官方映像将其视为“docker pull”命令。 –

+0

感谢您的澄清。 – user2453885