I'm trying to run nginx and Harp in a Docker container to serve my blog.
I've found this: https://github.com/octohost/harp-nginx
When I run sudo docker pull octohost/harp-nginx
, it downloads a bunch of files, but this is where I am stuck.
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.
I know that there are several ways for Docker to access files on the parent OS: https://blog.docker.com/2015/04/tips-for-deploying-nginx-official-image-with-docker/
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?
When I run sudo docker pull octohost/harp-nginx, it downloads a bunch of files, but this is where I am stuck.
These bunch of files should be the docker images, which to be used to create docker container.
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.
Usually, you can check the logs of a container to see what is the problem, you can run docker logs <container_id/container_name>
Then we back to your problem, seems octohost/harp-nginx
doesn't execute any command, so you should write your own Dockerfile
to use the environment. From octohost/harp-nginx
's repo README
, you can write a Dockerfile
like this:
FROM octohost/harp-nginx
WORKDIR /srv/www
ADD . /srv/www/
RUN harp compile
EXPOSE 80
CMD nginx
then you can build your own harp-nginx container by using docker build -t my-harp-nginx .
, after build success, you can create a new container by using docker run --name "harp-nginx" -d -p 8080:80 my-harp-nginx
Note that here we map host 8080 port to container's 80 port, so you can access your container's port from 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?
I am not familiar with harp
, so here is my understand and suggestions.
You should run harp compile
in the host but not container, just mount the compiled static content to nginx container and let nginx to serve it. If you do this, just use any nginx
docker image such as dockerfile/nginx, then mount your harp
output to /var/www/html
.
Seems harp
doesn't support live reload yet, so you need some extra tools to make it happen. [I am not sure about this part, just googled]