Как мне обслуживать страницу арфы /nginx из Docker?
Я пытаюсь запустить nginx и Harp в контейнере Docker для обслуживания моего блога.
Я нашел это: 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, указанным выше. Как я могу выполнить то, что я хочу?
1 ответ
Когда я запускаю sudo docker pull octohost/harp-nginx, он загружает кучу файлов, но я застрял здесь.
Эти файлы должны быть образами докеров, которые будут использоваться для создания контейнера докеров.
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
Затем вы можете создать свой собственный контейнер 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 его обслуживать. Если вы делаете это, просто используйте любойnginx
образ докера, такой как dockerfile / nginx, затем смонтируйтеharp
вывод на/var/www/html
,Кажется
harp
пока не поддерживает перезагрузку в реальном времени, поэтому вам нужны дополнительные инструменты, чтобы это произошло. [Я не уверен в этой части, просто погуглил]