如何从 Docker 提供 Harp/nginx 页面?
How do I serve a Harp/nginx page from Docker?
我正在尝试 运行 在 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 可以通过多种方式访问父 OS 上的文件:https://blog.docker.com/2015/04/tips-for-deploying-nginx-official-image-with-docker/
我希望 harp-nginx
容器挂载一个目录,例如 ~/my_blog/
,并让 Harp 即时编译这些目录并使用 nginx 为它们提供服务(在自定义端口上,因为 80 已经在采用)。我想从父 OS 编辑 ~/my_blog/
中的降价源,并让更改在网站中自动生效。但是我不知道如何处理上面链接的 octohost 容器。我怎样才能完成我想要的?
When I run sudo docker pull octohost/harp-nginx, it downloads a bunch of files, but this is where I am stuck.
这些文件应该是 docker 图像,用于创建 docker 容器。
sudo docker run -d -P octohost/harp-nginx doesn't seem to do anything. After I run this, if I look at sudo docker -ps -a I can see that the container gets created, then exits 1-2 seconds later. I also don't know how to see what ports my website will be served on.
通常情况下,你可以查看一个容器的日志,看看是什么问题,你可以运行 docker logs <container_id/container_name>
那我们回到你的问题,好像octohost/harp-nginx
不执行任何命令,所以你应该自己写Dockerfile
来使用环境。从 octohost/harp-nginx
的 repo 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
访问容器的端口
I want the harp-nginx container to mount a directory, for instance ~/my_blog/, and have Harp compile these on the fly and serve them with nginx (on a custom port because 80 is already in use). I want to edit the markdown source in ~/my_blog/ from the parent OS, and have the changes automatically take effect in the website. However I can't figure out what to do with the octohost container linked above. How can I accomplish what I want?
我不熟悉harp
,所以这里是我的理解和建议。
你应该运行 harp compile
在宿主机而不是容器中,只需将编译后的静态内容挂载到nginx容器并让nginx服务它。如果你这样做,只需使用任何 nginx
docker 图像,例如 dockerfile/nginx,然后将你的 harp
输出安装到 /var/www/html
。
似乎 harp
还不支持实时重新加载,因此您需要一些额外的工具来实现它。 [我不确定这部分,只是用谷歌搜索]
我正在尝试 运行 在 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 可以通过多种方式访问父 OS 上的文件:https://blog.docker.com/2015/04/tips-for-deploying-nginx-official-image-with-docker/
我希望 harp-nginx
容器挂载一个目录,例如 ~/my_blog/
,并让 Harp 即时编译这些目录并使用 nginx 为它们提供服务(在自定义端口上,因为 80 已经在采用)。我想从父 OS 编辑 ~/my_blog/
中的降价源,并让更改在网站中自动生效。但是我不知道如何处理上面链接的 octohost 容器。我怎样才能完成我想要的?
When I run sudo docker pull octohost/harp-nginx, it downloads a bunch of files, but this is where I am stuck.
这些文件应该是 docker 图像,用于创建 docker 容器。
sudo docker run -d -P octohost/harp-nginx doesn't seem to do anything. After I run this, if I look at sudo docker -ps -a I can see that the container gets created, then exits 1-2 seconds later. I also don't know how to see what ports my website will be served on.
通常情况下,你可以查看一个容器的日志,看看是什么问题,你可以运行 docker logs <container_id/container_name>
那我们回到你的问题,好像octohost/harp-nginx
不执行任何命令,所以你应该自己写Dockerfile
来使用环境。从 octohost/harp-nginx
的 repo 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
I want the harp-nginx container to mount a directory, for instance ~/my_blog/, and have Harp compile these on the fly and serve them with nginx (on a custom port because 80 is already in use). I want to edit the markdown source in ~/my_blog/ from the parent OS, and have the changes automatically take effect in the website. However I can't figure out what to do with the octohost container linked above. How can I accomplish what I want?
我不熟悉harp
,所以这里是我的理解和建议。
你应该运行
harp compile
在宿主机而不是容器中,只需将编译后的静态内容挂载到nginx容器并让nginx服务它。如果你这样做,只需使用任何nginx
docker 图像,例如 dockerfile/nginx,然后将你的harp
输出安装到/var/www/html
。似乎
harp
还不支持实时重新加载,因此您需要一些额外的工具来实现它。 [我不确定这部分,只是用谷歌搜索]