在没有源代码的情况下容器化 Web 应用程序?

时间:2021-07-28 06:58:31

标签: docker dockerfile cloud

我的任务是在没有源代码的情况下容器化 NodeJS Web 应用程序。我所拥有的只是网站 URL 和访问它的凭据。有没有办法编写一个 Dockerfile 来容器化这个网站?我搜索了整个互联网,但找不到一种方法来编写 Dockerfile 而不提及 src 代码的目录。任何帮助,将不胜感激。 谢谢。

1 个答案:

答案 0 :(得分:0)

在没有底层源代码的情况下对网站进行容器化的最接近方法是抓取网站并将结果放入静态网络服务器。

网站抓取最终比人们想象的要复杂,尤其是当您得到的网址中包含大量 get 参数时。

用一个非常简单的网站来说明这个概念的一个非常粗略的例子如下:

FROM alpine as downloader
RUN apk --no-cache add wget
RUN mkdir /output
WORKDIR /output
RUN wget -rnH https://www.example.com/

FROM nginx:alpine
COPY --from=downloader /output /usr/share/nginx/html/
$ docker build -t examplesitecopy .
$ docker run --name example -d -p 80:80 examplesitecopy

将实际的 https://www.example.com/ 与您本地运行的副本进行比较,它应该与 wget 抓取的页面相同。如果需要,请务必使用 docker build --no-cache 来破坏 RUN wget ... 步骤的缓存。

如果您真的希望 nodejs 代码在容器中运行,则需要获取该代码并将其放入容器中。此示例将仅使用 wget 制作副本并将其放入容器化的 nginx 静态 Web 服务器中。这个例子确实有效,但如果你想复制一个更复杂的网站,你肯定需要修改它: