我开始使用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注册表的好解决方案;
任何澄清将不胜感激
答案 0 :(得分:2)
有两种方法可以解决此问题。
请记住,拥有一个Docker容器的想法是为了简化部署,而不是进行开发。 Docker在开发方面的帮助程度是指您需要部署相对独立的多个服务作为对您所做工作的依赖项。
答案 1 :(得分:2)
@PaulProgrammer的答案是第二个问题的完美答案。
第一个问题:如果您的系统仅包含此应用,则可以公开公开80/443。但是,如果您希望让更多应用程序也监听80/443,则需要反向代理。该反向代理可以安装在系统上,也可以在另一个容器中运行。
我不认为容器化的目的是完全放弃将任何软件直接安装到系统中。它只是使部署和开发应用程序变得更加容易,在与不同环境进行交互时提供一致的行为,减少了依赖项设置应用程序的时间,甚至更加无缝地升级了应用程序。
在您的情况下,您的网站图像会创建一个HTTP服务器应用程序容器,该容器为您的Web应用程序提供服务。您可以将此HTTP服务器应用程序运送到任何地方。任何地方都包含某些环境的反向代理。
希望这会有所帮助:)