Как мне обслуживать страницу арфы /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 пока не поддерживает перезагрузку в реальном времени, поэтому вам нужны дополнительные инструменты, чтобы это произошло. [Я не уверен в этой части, просто погуглил]

Другие вопросы по тегам