diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..2770682 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,11 @@ +FROM squidfunk/mkdocs-material AS m3u-su-docs-builder +COPY . /docs +RUN mkdocs build + +FROM nginx:alpine AS m3u-su-docs +LABEL org.opencontainers.image.authors="Anthony Axenov " +COPY --from=m3u-su-docs-builder /docs/site /usr/share/nginx/html +WORKDIR /usr/share/nginx/html +USER root +EXPOSE 80 +CMD [ "nginx", "-g", "daemon off;" ] diff --git a/Makefile b/Makefile index 625fb3c..298b0d6 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,4 @@ +## image: Run mkdocs with live-reloading live: @echo "Wait until container starts and open http://localhost:3000 to see live preview" @docker run \ @@ -9,6 +10,7 @@ live: -v ${PWD}:/docs \ squidfunk/mkdocs-material:9.6.20 +## image: Build local static site build: @docker run \ --pull always \ @@ -16,4 +18,24 @@ build: --interactive \ --tty \ -v ${PWD}:/docs \ - squidfunk/mkdocs-material:9.6.20 build --verbose + squidfunk/mkdocs-material:9.6.20 build + +## image: Build docker image +image: + @docker build \ + --tag m3u-su-docs:latest \ + --tag git.axenov.dev/iptv/m3u-su-docs:latest \ + . + +## push: Push docker image to registry +push: + @docker push git.axenov.dev/iptv/m3u-su-docs:latest + +## push: Push docker image to registry +run: + @docker run -p 3001:80 git.axenov.dev/iptv/m3u-su-docs:latest + +## help: Show this message and exit +help: Makefile + @echo "Available recipes:" + @sed -n 's/^##//p' $< | column -t -s ':' | sed -e 's/^/ /' diff --git a/src/dev/docs.md b/src/dev/docs.md index fd3ca78..a668ecb 100644 --- a/src/dev/docs.md +++ b/src/dev/docs.md @@ -17,7 +17,7 @@ icon: material/book-cog-outline **Каждое предложение должно быть на одной строке.** Это даёт более наглядную разницу (diff) в тексте при работе с git. -Абзацы и списки должны отделяться 1 пустой строкой сверху и снизу. +Абзацы и списки должны отделяться 1 пустой строкой до и после. Допустимо использовать любые стилистические возможности темы **Material for MkDocs** и самого **mkdocs**, но не следует визуально перегружать текст. Документацию по ним см. по ссылкам ниже. @@ -74,24 +74,30 @@ icon: material/book-cog-outline make live ``` -Перегенерирует документацию на лету сразу после изменения файлов. +Перегенерирует документацию на лету сразу после сохранения файлов. -Открывает [localhost:3000](http://localhost:3000) для просмотра изменений в реальном времени. +Документацию в реальном времени можно просматривать по адресу [localhost:3000](http://localhost:3000). -## Генерация статических файлов +## Генерация статического сайта ``` make build ``` -Генерирует статические файлы, которую можно версионировать и хранить/деплоить отдельно. - -Открывает [localhost:8080/docs](http://localhost:8080/docs) для просмотра сгенерированной документации. +Генерирует статические файлы, которую можно версионировать, хранить,деплоить отдельно или просматривать на ПК через браузер. Готовый скомпилированный статический сайт с документацией находится в директории `site/`. -Он же хранится в репозитории вместе с исходными файлами, потому что: -* я посчитал это **более удобным для деплоя**: ради редких обновлений нет смысла тратить ресурсы серверов на ci/cd, actions по хукам и перманентную работу `mkdocs` в режиме `build`; -* я посчитал это **более удобным для использования**: можно в любой момент открыть актуальную документацию в браузере через `site/index.html` без необходимости `make` и `docker`. +## Генерация docker-образа -Пересборка должна происходить перед каждым коммитом. +``` +make image +``` + +Собирает docker-образ на основе nginx, генерируя перед этим статический сайт. + +Запустить контейнер из этого образа можно командой: + +``` +make run +```