0

我正在尝试在 Docker 容器中运行 nginx 和 Harp 来为我的博客提供服务。

我发现了这个:https ://github.com/octohost/harp-nginx

当我运行时sudo docker pull octohost/harp-nginx,它会下载一堆文件,但这就是我卡住的地方。

sudo docker run -d -P octohost/harp-nginx似乎什么也没做。在我运行这个之后,如果我看一下,sudo docker -ps -a我可以看到容器被创建,然后在 1-2 秒后退出。我也不知道如何查看我的网站将在哪些端口上提供服务。

我知道 Docker 有几种方法可以访问父操作系统上的文件:https ://blog.docker.com/2015/04/tips-for-deploying-nginx-official-image-with-docker/

例如,我希望harp-nginx容器挂载一个目录,~/my_blog/并让 Harp 即时编译这些目录并使用 nginx 为它们提供服务(在自定义端口上,因为 80 已经在使用中)。我想~/my_blog/从父操作系统编辑降价源,并让更改在网站中自动生效。但是我不知道如何处理上面链接的 octohost 容器。我怎样才能完成我想要的?

4

1 回答 1

1

当我运行 sudo docker pull octohost/harp-nginx 时,它会下载一堆文件,但这就是我卡住的地方。

这些文件应该是 docker 镜像,用于创建 docker 容器。

sudo docker run -d -P octohost/harp-nginx 似乎没有做任何事情。在我运行这个之后,如果我查看 sudo docker -ps -a 我可以看到容器被创建,然后在 1-2 秒后退出。我也不知道如何查看我的网站将在哪些端口上提供服务。

通常,你可以查看一个容器的日志,看看是什么问题,你可以运行docker logs <container_id/container_name>

然后我们回到你的问题,似乎octohost/harp-nginx没有执行任何命令,所以你应该自己编写Dockerfile使用环境。从octohost/harp-nginx's repo README,你可以Dockerfile这样写:

FROM octohost/harp-nginx

WORKDIR /srv/www

ADD . /srv/www/
RUN harp compile

EXPOSE 80

CMD nginx

然后您可以使用 构建自己的 harp-nginx 容器docker build -t my-harp-nginx .,构建成功后,您可以使用创建一个新容器docker run --name "harp-nginx" -d -p 8080:80 my-harp-nginx

请注意,这里我们将主机 8080 端口映射到容器的 80 端口,因此您可以从http://localhost:8080

我希望 harp-nginx 容器挂载一个目录,例如 ~/my_blog/,并让 Harp 即时编译这些目录并使用 nginx 为它们提供服务(在自定义端口上,因为 80 已经在使用中)。我想从父操作系统编辑 ~/my_blog/ 中的降价源,并让更改在网站中自动生效。但是我不知道如何处理上面链接的 octohost 容器。我怎样才能完成我想要的?

我不熟悉harp,所以这里是我的理解和建议。

  • 您应该harp compile在主机而不是容器中运行,只需将编译后的静态内容挂载到 nginx 容器并让 nginx 为其提供服务。如果这样做,只需使用任何dockernginx映像,例如dockerfile/nginx,然后将harp输出挂载到/var/www/html.

  • 似乎harp还不支持实时重新加载,因此您需要一些额外的工具来实现它。[我不确定这部分,只是用谷歌搜索]

于 2015-07-12T10:07:52.403 回答