我开始使用docker尝试简单的静态网站(只有一些html文件、js和css);
我已经成功地用nginx创建了容器;第一个问题是如何让它在服务器上工作;这对我来说并不清楚;现在我想到的解决方案是在服务器上安装nginx和docker;我已经使用docker运行了容器映射端口5000:
docker run -d -p 5000:80 my_website_image并且直接在服务器上使用nginx作为反向代理将my_website_domain的请求转发到端口5000;即使这样可以工作,我猜也不是正确的解决方案(使用容器的目的不是为了不在服务器机器上安装docker以外的任何东西吗?)
第二个问题是关于部署的:通常(在使用docker之前)我在本地更新文件,与服务器上的远程文件夹运行rsync,并在一秒钟内在线进行更改;
现在使用docker,我必须在本地进行更改,重新构建镜像,推送镜像,转到服务器并拉取镜像,重新启动容器……对于这个简单的任务,还有更多的工作要做;不可能轻松地更新正在运行的容器中的文件?除此之外,我也不想非要使用docker注册表,因为那样会花费很多钱,而且我已经为我的代码购买了git存储库;所以这将是一个不使用docker注册表的很好的解决方案;
如有任何澄清,不胜感激。
发布于 2018-10-11 23:58:43
有几种方法可以解决这个问题。
请记住,拥有docker容器的想法是为了简化部署,而不是开发。docker在开发中的帮助程度是存在多个相对独立的服务的程度,您需要将这些服务部署为您正在进行的工作的依赖项。
发布于 2018-10-12 13:24:00
@PaulProgrammer的回答是对第二个问题的完美回答。
第一个问题的:如果你的系统只包含这个应用程序,你可以只公开80/443。但是,如果有更多的应用程序需要他们也监听80/443,那么就需要反向代理。该反向代理可以安装在系统上,也可以在另一个容器中运行。
我不认为容器化的目的是完全放弃将任何软件直接安装到系统中。它使部署和开发应用程序变得更加容易,在与不同环境交互时提供一致的行为,减少设置应用程序及其依赖项的时间,甚至可以更无缝地升级应用程序。
在您的示例中,您的网站图像创建了一个HTTP服务器应用程序容器,该容器为您的web应用程序提供服务。您可以在任何地方发布此HTTP服务器应用程序。Anywhere包括在某些环境的反向代理后面。
希望这能有所帮助:)
https://stackoverflow.com/questions/52764243
复制相似问题