如何从Docker提供Harp / nginx页面?

时间:2015-07-12 08:39:31

标签: ubuntu nginx docker harp

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

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

当我运行AsyncTask时,会下载一堆文件,但这就是我被困住的地方。

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

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

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

1 个答案:

答案 0 :(得分: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的回购README开始,您可以这样写Dockerfile

FROM octohost/harp-nginx

WORKDIR /srv/www

ADD . /srv/www/
RUN harp compile

EXPOSE 80

CMD nginx

然后您可以使用docker build -t my-harp-nginx .构建自己的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 /中的markdown源,并让更改自动在网站中生效。但是我无法弄清楚如何处理上面链接的octohost容器。我怎样才能完成我想要的东西?

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

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

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