Упаковка в docker

This commit is contained in:
2025-11-22 17:18:34 +08:00
parent 0e626ac48b
commit 49b85a6bee
3 changed files with 51 additions and 12 deletions

11
Dockerfile Normal file
View File

@@ -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 <anthonyaxenov@gmail.com>"
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;" ]

View File

@@ -1,3 +1,4 @@
## image: Run mkdocs with live-reloading
live: live:
@echo "Wait until container starts and open http://localhost:3000 to see live preview" @echo "Wait until container starts and open http://localhost:3000 to see live preview"
@docker run \ @docker run \
@@ -9,6 +10,7 @@ live:
-v ${PWD}:/docs \ -v ${PWD}:/docs \
squidfunk/mkdocs-material:9.6.20 squidfunk/mkdocs-material:9.6.20
## image: Build local static site
build: build:
@docker run \ @docker run \
--pull always \ --pull always \
@@ -16,4 +18,24 @@ build:
--interactive \ --interactive \
--tty \ --tty \
-v ${PWD}:/docs \ -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/^/ /'

View File

@@ -17,7 +17,7 @@ icon: material/book-cog-outline
**Каждое предложение должно быть на одной строке.** **Каждое предложение должно быть на одной строке.**
Это даёт более наглядную разницу (diff) в тексте при работе с git. Это даёт более наглядную разницу (diff) в тексте при работе с git.
Абзацы и списки должны отделяться 1 пустой строкой сверху и снизу. Абзацы и списки должны отделяться 1 пустой строкой до и после.
Допустимо использовать любые стилистические возможности темы **Material for MkDocs** и самого **mkdocs**, но не следует визуально перегружать текст. Допустимо использовать любые стилистические возможности темы **Material for MkDocs** и самого **mkdocs**, но не следует визуально перегружать текст.
Документацию по ним см. по ссылкам ниже. Документацию по ним см. по ссылкам ниже.
@@ -74,24 +74,30 @@ icon: material/book-cog-outline
make live make live
``` ```
Перегенерирует документацию на лету сразу после изменения файлов. Перегенерирует документацию на лету сразу после сохранения файлов.
Открывает [localhost:3000](http://localhost:3000) для просмотра изменений в реальном времени. Документацию в реальном времени можно просматривать по адресу [localhost:3000](http://localhost:3000).
## Генерация статических файлов ## Генерация статического сайта
``` ```
make build make build
``` ```
Генерирует статические файлы, которую можно версионировать и хранить/деплоить отдельно. Генерирует статические файлы, которую можно версионировать, хранить,деплоить отдельно или просматривать на ПК через браузер.
Открывает [localhost:8080/docs](http://localhost:8080/docs) для просмотра сгенерированной документации.
Готовый скомпилированный статический сайт с документацией находится в директории `site/`. Готовый скомпилированный статический сайт с документацией находится в директории `site/`.
Он же хранится в репозитории вместе с исходными файлами, потому что:
* я посчитал это **более удобным для деплоя**: ради редких обновлений нет смысла тратить ресурсы серверов на ci/cd, actions по хукам и перманентную работу `mkdocs` в режиме `build`; ## Генерация docker-образа
* я посчитал это **более удобным для использования**: можно в любой момент открыть актуальную документацию в браузере через `site/index.html` без необходимости `make` и `docker`.
Пересборка должна происходить перед каждым коммитом. ```
make image
```
Собирает docker-образ на основе nginx, генерируя перед этим статический сайт.
Запустить контейнер из этого образа можно командой:
```
make run
```