Sign inSign up

sv90/project-documentation

By sv90

•Updated about 1 month ago

Image
0

3.0K

sv90/project-documentation repository overview

⁠sv90/project-documentation

Production Docker image за WebBuild Markdown проектна документация.

Image-ът стартира Laravel reader приложение върху PHP CLI runtime. Той съдържа файловете за изпълнение, публичните reader assets, конфигурационния слой и Composer зависимостите. Не съдържа проектното Markdown съдържание. Документацията трябва да се монтира в container-а на /var/www/source.

⁠Бърз старт

mkdir -p docs-source
printf '# Проектна документация\n\nПубликувано съдържание.\n' > docs-source/README.md

docker run --rm \
  -p 8080:80 \
  -v "$PWD/docs-source:/var/www/source:ro" \
  -e APP_NAME="Проектна документация" \
  -e APP_BRAND="Acme" \
  -e APP_VERSION="0.1.18" \
  sv90/project-documentation:0.1.18

Отворете http://127.0.0.1:8080/.

⁠Задължителен volume

Монтирайте Markdown документацията на:

/var/www/source

Минимално съдържание:

source/
  README.md

Не монтирайте цял checkout за разработка върху /var/www/project при използване на production image-а. Това ще скрие файловете за изпълнение, които image-ът вече съдържа.

⁠Docker Compose

Готов файл за копиране: examples/docker-compose.yml⁠.

services:
  docs:
    image: sv90/project-documentation:0.1.18
    ports:
      - "8080:80"
    environment:
      APP_NAME: "Проектна документация"
      APP_BRAND: "Acme"
      APP_NAME_DESCRIPTION: "Вътрешна документация"
      APP_VERSION: "0.1.18"
      APP_SOURCE: "source"
    volumes:
      - ./source:/var/www/source:ro
    restart: unless-stopped

Default логото е част от image-а като /webbuild-b-white.png. За собствено лого или други публични assets монтирайте и /var/www/assets, и задайте APP_LOGO към относителен файл от тази директория.

Копирайте файла в директория за внедряване, която съдържа source/README.md, след което стартирайте:

docker compose up -d

⁠Конфигурация

Environment променливи за изпълнение:

ПроменливаСтойност по подразбиранеЗначение
APP_NAMEПроектна документацияЗаглавие и име на документацията.
APP_BRANDWebBuildБранд текст.
APP_LOGO/webbuild-b-white.pngBuilt-in public logo или custom файл от assets директорията.
APP_NAME_DESCRIPTIONBy WebBuildПодзаглавие.
APP_VERSIONVERSION файлаВерсията на документационния reader/runtime, показана в sidebar header-а.
PROJECT_READER_SOURCE_PATH/var/www/sourceДиректория със съдържанието в container-а.
PROJECT_READER_ASSETS_PATH/var/www/assetsДиректория с публични assets в container-а.
APP_SOURCEsourceЛокален fallback за development, когато не е зададен PROJECT_READER_SOURCE_PATH.

Laravel runtime слуша на container port 80.

⁠Kubernetes

Готов минимален файл за kubectl apply: examples/kubernetes.yaml⁠.

За малка документация примерът монтира ConfigMap като /var/www/source. За по-голямо съдържание заменете ConfigMap volume-а с persistent volume, git-sync/init container или друг deployment процес, който записва Markdown файлове в същия path.

apiVersion: v1
kind: ConfigMap
metadata:
  name: project-docs-source
data:
  README.md: |
    # Проектна документация

    Публикувано съдържание.
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: project-docs
spec:
  replicas: 1
  selector:
    matchLabels:
      app: project-docs
  template:
    metadata:
      labels:
        app: project-docs
    spec:
      containers:
        - name: docs
          image: sv90/project-documentation:0.1.18
          ports:
            - containerPort: 80
          env:
            - name: APP_NAME
              value: "Проектна документация"
            - name: APP_BRAND
              value: "Acme"
            - name: APP_NAME_DESCRIPTION
              value: "Вътрешна документация"
            - name: APP_VERSION
              value: "0.1.18"
            - name: APP_SOURCE
              value: "source"
          volumeMounts:
            - name: source
              mountPath: /var/www/source
              readOnly: true
          readinessProbe:
            httpGet:
              path: /
              port: 80
          livenessProbe:
            httpGet:
              path: /
              port: 80
      volumes:
        - name: source
          configMap:
            name: project-docs-source
---
apiVersion: v1
kind: Service
metadata:
  name: project-docs
spec:
  selector:
    app: project-docs
  ports:
    - name: http
      port: 80
      targetPort: 80

След като копирате файла като kubernetes.yaml, го приложете с:

kubectl apply -f kubernetes.yaml

⁠Тагове и експлоатация

За внедряване използвайте version tag, например sv90/project-documentation:0.1.18. Тагът latest сочи към последната публикувана версия.

Image-ът се публикува за linux/amd64 и linux/arm64.

Няма отделен health endpoint; използвайте HTTP probe към /. Container-ът чете Markdown съдържание от монтирания source volume и не инсталира зависимости по време на изпълнение.

Tag summary

Content type

Image

Digest

sha256:b4534be82…

Size

52.2 MB

Last updated

about 1 month ago

docker pull sv90/project-documentation