mirror of
https://github.com/docker/docs.git
synced 2026-11-04 10:01:00 +00:00
## Description Gordon answers everything in plain markdown, even when the answer is a procedure or a comparison. Those answers are harder to scan than they need to be. This PR lets Gordon put a small card inside its answer when that helps: - **Steps** for procedures, with commands in code boxes - **Tables** for comparisons (limits, plans, options) - **Notes** for warnings, active incidents or tips - **Code snippets** for config files - **Follow-up questions** as chips. Selecting one asks it as your next question. ``` You can containerize it with docker init, then run it with Compose. ┌───────────────────────────────────────────────┐ │ Containerize a Node.js app │ │ ① Generate the Docker assets │ │ [ docker init ] │ │ ② Build and run the app │ │ [ docker compose up --build ] │ │ ▌ Use Docker Hardened Images for security │ │ ( How do I add a database service? ) │ └───────────────────────────────────────────────┘ Sources: - https://docs.docker.com/guides/nodejs/ ``` Short answers, explanations and greetings stay plain markdown. ### How it works ``` chat ── "I can draw cards" (ui: "openui-v1") ──▶ Gordon chat ◀── markdown answer, with at most one ```openui-lang block ── Gordon chat: draws the block as a card, everything else as markdown ``` - The chat sends one extra field with each question. Only then does Gordon's backend tell the model it may add a card. Without the field, answers are the same as today. - A card is a fenced block of [OpenUI Lang](https://www.openui.com/docs/openui-lang) inside the normal answer text, so the conversation history and stored messages stay plain text. - The chat draws the block with its own styles. Anything it doesn't recognize is left out, and if the card code can't load, the block shows as a plain code block. ### Visual change to all answers Gordon's answers are no longer inside a grey bubble. A framed card inside the grey bubble looked like a box in a box. Answers now sit on the panel background at full width, and the card stands out as its own block. Your own messages keep the blue bubble. <!-- screenshots: before / after, light and dark --> ### Rollout - Cards are **on in local builds and deploy previews**, and **off in production**. - To turn them on in production, set `params.gordon.cards: true` in `hugo.yaml`. - Gordon's backend already supports this, so no other change is needed. ### Other notes - **Safety:** card text from the model is only ever inserted as text, never as HTML. - **Page weight:** the card code (about 120 KB gzipped) is a separate bundle. It's only downloaded when an answer first contains a card, never on page load. - **Copy button:** copies the answer with cards written out as markdown (numbered steps, a table, `> [!NOTE]`), not the raw card code. Follow-up chips are left out. - **Instructions Gordon gets:** the prompt lives entirely in Gordon's backend, which injects it when the chat sends `ui: "openui-v1"`. This repo only has the component list the chat draws (`assets/js/gordon-cards/components.mjs`). The backend's card prompt describes the same components, so when adding or changing one, the backend's prompt changes with it. - **New dependencies:** `@openuidev/lang-core` (the OpenUI Lang parser) and `zod`, pinned. Its usage telemetry never runs in a browser, and `.npmrc` already blocks install scripts. ### How to test 1. Run `docker compose watch` and open http://localhost:1313. Local builds use Gordon's staging backend. 2. Open Gordon from the header and ask: - **Should show a card:** "How do I containerize my Node.js app?", "What are the Docker Hub pull limits?", "How do I set up a registry mirror?" - **Should stay plain text:** "What is Docker Scout?", "hi" 3. Select a follow-up chip. It should ask that question. 4. Select **Copy** on an answer with a card. The pasted text should be markdown. 5. Reload the page. Cards should come back from the conversation history. 6. Check dark mode. 7. In the browser's Network tab, check: - each question to `/public/ask` includes `"ui": "openui-v1"`; - `gordon-cards.js` only loads after the first answer with a card. ## Related issues or tickets <!-- none public --> ## Reviews - [x] Technical review - [ ] Editorial review - [ ] Product review
438 lines
13 KiB
YAML
438 lines
13 KiB
YAML
title: Docker Docs
|
|
baseURL: https://docs.docker.com
|
|
refLinksErrorLevel: ERROR
|
|
enableGitInfo: true
|
|
disablePathToLower: true
|
|
enableInlineShortcodes: true
|
|
disableHugoGeneratorInject: true
|
|
ignoreLogs:
|
|
- cascade-pattern-with-extension
|
|
|
|
taxonomies: {}
|
|
|
|
security:
|
|
exec:
|
|
allow:
|
|
- ^(dart-)?sass$
|
|
- ^go$
|
|
- ^git$
|
|
- ^node$
|
|
- ^postcss$
|
|
- ^tailwindcss$
|
|
|
|
# Cascade layout and type settings to content subtrees.
|
|
# See https://gohugo.io/configuration/cascade/#target
|
|
cascade:
|
|
# Sample pages use the samples type (routes to layouts/samples/)
|
|
- target:
|
|
path: /reference/samples/**
|
|
kind: page
|
|
type: samples
|
|
# CLI reference pages use the cli layout (data-driven from YAML)
|
|
- target:
|
|
path: /reference/cli/docker
|
|
layout: cli
|
|
- target:
|
|
path: /reference/cli/docker/**
|
|
layout: cli
|
|
# sbx CLI reference pages use the sbx-cli layout (cobra/doc YAML)
|
|
- target:
|
|
path: /reference/cli/sbx
|
|
layout: sbx-cli
|
|
- target:
|
|
path: /reference/cli/sbx/**
|
|
layout: sbx-cli
|
|
# Docker Agent section indexes are mounted navigation stubs; skip
|
|
# rendering them so they don't produce empty pages (same pattern as
|
|
# gordon/concepts and other render:never section indexes)
|
|
- target:
|
|
path: /manuals/ai/docker-agent/**
|
|
kind: section
|
|
build:
|
|
render: never
|
|
|
|
# Remove the /manuals prefix for content in the manuals section
|
|
permalinks:
|
|
page:
|
|
manuals: /:sections[1:]/:slugorcontentbasename/
|
|
section:
|
|
manuals: /:sections[1:]/
|
|
|
|
markup:
|
|
tableOfContents:
|
|
startLevel: 2
|
|
endLevel: 3
|
|
goldmark:
|
|
extensions:
|
|
typographer: false
|
|
parser:
|
|
wrapStandAloneImageWithinParagraph: false
|
|
attribute:
|
|
# Allow setting attributes on block-level elements
|
|
block: true
|
|
renderer:
|
|
# Allow inline HTML
|
|
unsafe: true
|
|
highlight:
|
|
# Use custom CSS for syntax highlighting
|
|
noClasses: false
|
|
|
|
build:
|
|
# Generate hugo_stats.json - Tailwind uses this to detect classes
|
|
buildStats:
|
|
enable: true
|
|
disableIDs: true
|
|
disableTags: true
|
|
# Ensure that CSS/assets changes trigger a dev server rebuild
|
|
cachebusters:
|
|
- source: assets/notwatching/hugo_stats\.json
|
|
target: css
|
|
- source: (postcss|tailwind)\.config\.js
|
|
target: css
|
|
- source: assets/.*\.js
|
|
target: js
|
|
- source: (assets|layouts)/.*\.(.*)$
|
|
target: "$2"
|
|
|
|
# Additional output formats (e.g. custom JSON files)
|
|
outputFormats:
|
|
# File containing all redirects, see: layouts/index.redirects.json
|
|
redirects:
|
|
baseName: redirects
|
|
isPlainText: true
|
|
mediaType: "application/json"
|
|
notAlternative: true
|
|
# Metadata file used by DD global search, see: layouts/index.metadata.json
|
|
metadata:
|
|
baseName: metadata
|
|
isPlainText: true
|
|
mediaType: "application/json"
|
|
notAlternative: true
|
|
# llms.txt
|
|
llms:
|
|
baseName: llms
|
|
isPlainText: true
|
|
mediaType: "text/plain"
|
|
notAlternative: true
|
|
permalinkable: false
|
|
llmsfull:
|
|
baseName: llms-full
|
|
isPlainText: true
|
|
mediaType: "text/plain"
|
|
notAlternative: true
|
|
permalinkable: false
|
|
|
|
# Enable custom output formats
|
|
# (only generate the custom output files once)
|
|
outputs:
|
|
home:
|
|
- html
|
|
- markdown
|
|
- redirects
|
|
- metadata
|
|
- robots
|
|
- llms
|
|
- llmsfull
|
|
page:
|
|
- html
|
|
- markdown
|
|
section:
|
|
- html
|
|
- markdown
|
|
|
|
languages:
|
|
en:
|
|
label: English
|
|
|
|
# Site-wide parameters
|
|
# Can be accessed in content with {{% param "param_name" %}}
|
|
# Or in layouts/partials with site.Params.param_name
|
|
params:
|
|
analytics:
|
|
hotjar:
|
|
prod: 3169877
|
|
stage: 3218181
|
|
google: GTM-WL2QLG5
|
|
onetrust: 65425fb0-7b36-4317-9f10-7b3e08039af0
|
|
marlin:
|
|
# Public-write API keys for the Marlin analytics SDK.
|
|
apiKey:
|
|
prod: mrl_2nuEKUo5bzRv8GcDKeYjij4J4U--OLdN
|
|
stage: mrl_W14SGEQ7nYmBsAyjZPyOM-nlgE53E-vX
|
|
endpoint:
|
|
prod: https://marlin-2.docker.com
|
|
stage: https://marlin-2-stage.docker.com
|
|
|
|
# Docs repository URL
|
|
repo: https://github.com/docker/docs
|
|
|
|
# Gordon chat
|
|
gordon:
|
|
# Lets Gordon answer with cards (steps, tables, notes, snippets, follow-up
|
|
# questions) in production builds. Always on in other environments.
|
|
cards: false
|
|
|
|
# === Example versions ===
|
|
# The following parameters are used in various ways in content and templates.
|
|
# Mostly as examples in code snippets, but also in other exotic ways.
|
|
# Use `grep` to figure out how they might be used.
|
|
|
|
# Latest version of the Docker Engine API
|
|
latest_engine_api_version: "1.56"
|
|
# Latest version of Docker Engine
|
|
docker_ce_version: "29.8.2"
|
|
# Previous version of the Docker Engine
|
|
# (Used to show e.g., "latest" and "latest"-1 in engine install examples
|
|
docker_ce_version_prev: "29.8.1"
|
|
# Latest Docker Compose version
|
|
compose_version: "v5.6.0"
|
|
# Latest BuildKit version
|
|
buildkit_version: "0.32.0"
|
|
# Latest actions version
|
|
bake_action_version: "v7"
|
|
build_push_action_version: "v7"
|
|
login_action_version: "v4"
|
|
metadata_action_version: "v6"
|
|
setup_buildx_action_version: "v4"
|
|
setup_compose_action_version: "v2"
|
|
setup_docker_action_version: "v5"
|
|
setup_qemu_action_version: "v4"
|
|
github_builder_version: "v1"
|
|
# Generic actions
|
|
checkout_action_version: "v6"
|
|
cache_action_version: "v5"
|
|
|
|
# Example runtime/library/os versions
|
|
example_go_version: "1.26"
|
|
example_alpine_version: "3.23"
|
|
example_node_version: "24"
|
|
|
|
menus:
|
|
# Site header menu
|
|
main:
|
|
- name: Get started
|
|
pageRef: /get-started/
|
|
weight: 1
|
|
- name: Guides
|
|
pageRef: /guides/
|
|
weight: 2
|
|
- name: Manuals
|
|
pageRef: /manuals/
|
|
weight: 3
|
|
- name: Reference
|
|
pageRef: /reference/
|
|
weight: 4
|
|
|
|
# Footer links
|
|
footer:
|
|
- url: https://www.docker.com/products
|
|
name: Product offerings
|
|
- url: https://www.docker.com/products/personal
|
|
name: Docker Personal
|
|
parent: Product offerings
|
|
- url: https://www.docker.com/products/pro
|
|
name: Docker Pro
|
|
parent: Product offerings
|
|
- url: https://www.docker.com/products/team
|
|
name: Docker Team
|
|
parent: Product offerings
|
|
- url: https://www.docker.com/products/business
|
|
name: Docker Business
|
|
parent: Product offerings
|
|
- url: https://www.docker.com/pricing?ref=Docs&refAction=DocsFooter
|
|
name: Pricing FAQs
|
|
parent: Product offerings
|
|
- url: https://www.docker.com/partners/programs
|
|
name: Docker Verified Publisher
|
|
parent: Product offerings
|
|
- url: https://www.docker.com/partners
|
|
name: Partners
|
|
parent: Product offerings
|
|
|
|
- url: https://www.docker.com/
|
|
name: Features
|
|
- url: https://www.docker.com/products/docker-desktop
|
|
name: Docker Desktop
|
|
parent: Features
|
|
- url: https://www.docker.com/products/docker-hub
|
|
name: Docker Hub
|
|
parent: Features
|
|
- url: https://www.docker.com/products/secure-software-supply-chain
|
|
name: Secure Software Supply Chain
|
|
parent: Features
|
|
- url: https://www.docker.com/products/container-runtime
|
|
name: Container Runtime
|
|
parent: Features
|
|
- url: https://www.docker.com/products/developer-tools
|
|
name: Developer Tools
|
|
parent: Features
|
|
- url: https://www.docker.com/partners
|
|
name: Trusted Content
|
|
parent: Features
|
|
- url: https://www.docker.com/roadmap
|
|
name: Docker Product Roadmap
|
|
parent: Features
|
|
|
|
- name: Developers
|
|
- url: https://www.docker.com/use-cases
|
|
name: Use cases
|
|
parent: Developers
|
|
- url: /get-started/
|
|
name: Get started
|
|
parent: Developers
|
|
- url: https://www.docker.com/blog/
|
|
name: Blog
|
|
parent: Developers
|
|
- url: https://www.docker.com/docker-community
|
|
name: Community
|
|
parent: Developers
|
|
- url: https://www.docker.com/open-source
|
|
name: Open Source
|
|
parent: Developers
|
|
- url: https://www.docker.com/community/get-involved/developer-preview
|
|
name: Preview Program
|
|
parent: Developers
|
|
|
|
- url: https://www.docker.com/company
|
|
name: About us
|
|
- url: https://www.docker.com/what-container
|
|
name: What is a container?
|
|
parent: About us
|
|
- url: https://www.docker.com/why-docker
|
|
name: Why Docker?
|
|
parent: About us
|
|
- url: https://www.docker.com/events
|
|
name: Virtual events
|
|
parent: About us
|
|
- url: https://www.docker.com/swag
|
|
name: Swag store
|
|
parent: About us
|
|
- url: https://www.docker.com/company/newsroom
|
|
name: Newsroom
|
|
parent: About us
|
|
- url: https://www.docker.com/careers
|
|
name: Careers
|
|
parent: About us
|
|
- url: https://www.docker.com/company/contact
|
|
name: Contact us
|
|
parent: About us
|
|
- url: https://www.docker.com/customers
|
|
name: Customers
|
|
parent: About us
|
|
- url: https://www.docker.com/newsletter-subscription
|
|
name: Newsletter
|
|
parent: About us
|
|
|
|
# Hugo modules - for fetching docs from upstream repos
|
|
# NOTE: we always vendor upstream docs in _vendor/
|
|
# Versions are declared in go.mod
|
|
module:
|
|
proxy: https://proxy.golang.org,direct
|
|
hugoVersion:
|
|
extended: false
|
|
min: "0.156.0"
|
|
mounts:
|
|
- source: data
|
|
target: data
|
|
# Mount the assets directory so it doesn't get overwritten
|
|
- source: assets
|
|
target: assets
|
|
# Mount hugo_stats.json to the assets dir to trigger cachebust
|
|
- disableWatch: true
|
|
source: hugo_stats.json
|
|
target: assets/notwatching/hugo_stats.json
|
|
# Mount the icon files to assets so we can access them with resources.Get
|
|
- source: node_modules/heroicons/24/solid
|
|
target: assets/icons
|
|
# Mount highlight.js theme for Gordon chat syntax highlighting
|
|
- source: node_modules/highlight.js/styles/github-dark.css
|
|
target: assets/css/highlight-github-dark.css
|
|
|
|
imports:
|
|
# Docker Engine API
|
|
- path: github.com/moby/moby/api
|
|
mounts:
|
|
- source: docs/CHANGELOG.md
|
|
target: content/reference/api/engine/version-history.md
|
|
- source: docs
|
|
target: content/reference/api/engine/version
|
|
files: ["*.yaml"]
|
|
|
|
# BuildKit
|
|
- path: github.com/moby/buildkit
|
|
mounts:
|
|
- source: frontend/dockerfile/docs/reference.md
|
|
target: content/reference/dockerfile.md
|
|
- source: frontend/dockerfile/docs/rules
|
|
target: content/reference/build-checks
|
|
files: ["*.md"]
|
|
- source: docs/buildkitd.toml.md
|
|
target: content/manuals/build/buildkit/toml-configuration.md
|
|
- source: docs/attestations/slsa-definitions.md
|
|
target: content/manuals/build/metadata/attestations/slsa-definitions.md
|
|
- source: docs/attestations/attestation-storage.md
|
|
target: content/manuals/build/metadata/attestations/attestation-storage.md
|
|
|
|
# Buildx CLI plugin
|
|
- path: github.com/docker/buildx
|
|
mounts:
|
|
- source: docs/bake-reference.md
|
|
target: content/manuals/build/bake/reference.md
|
|
- source: docs/bake-stdlib.md
|
|
target: content/manuals/build/bake/stdlib.md
|
|
|
|
# Docker CLI
|
|
- path: github.com/docker/cli
|
|
mounts:
|
|
- source: docs/extend
|
|
target: content/manuals/engine/extend
|
|
files:
|
|
- "! EBS_volume.md"
|
|
- "! plugins_metrics.md"
|
|
- "! plugins_services.md"
|
|
- source: docs/deprecated.md
|
|
target: content/manuals/engine/deprecated.md
|
|
- source: docs/reference/run.md
|
|
target: content/manuals/engine/containers/run.md
|
|
- source: docs/reference/dockerd.md
|
|
target: content/reference/cli/dockerd.md
|
|
|
|
# Compose
|
|
- path: github.com/docker/compose/v5
|
|
mounts:
|
|
- source: docs/reference
|
|
target: data/cli/compose
|
|
files: ["*.yaml"]
|
|
|
|
# Model CLI
|
|
- path: github.com/docker/model-runner
|
|
mounts:
|
|
- source: cmd/cli/docs/reference
|
|
target: data/cli/model
|
|
files: ["*.yaml"]
|
|
|
|
# Docker Agent
|
|
# Single-sources https://docker.github.io/docker-agent/ content;
|
|
# bumped on each docker-agent release by sync-docker-agent-docs.yml.
|
|
# Sections are mounted individually so hugo mod vendor does not
|
|
# vendor the upstream Jekyll site files that also live in docs/.
|
|
# Community is published only at https://docker.github.io/docker-agent/.
|
|
- path: github.com/docker/docker-agent
|
|
mounts:
|
|
- source: docs/getting-started
|
|
target: content/manuals/ai/docker-agent/getting-started
|
|
- source: docs/concepts
|
|
target: content/manuals/ai/docker-agent/concepts
|
|
- source: docs/configuration
|
|
target: content/manuals/ai/docker-agent/configuration
|
|
- source: docs/tools
|
|
target: content/manuals/ai/docker-agent/tools
|
|
- source: docs/providers
|
|
target: content/manuals/ai/docker-agent/providers
|
|
- source: docs/features
|
|
target: content/manuals/ai/docker-agent/features
|
|
- source: docs/guides
|
|
target: content/manuals/ai/docker-agent/guides
|
|
- source: docs/demo.gif
|
|
target: content/manuals/ai/docker-agent/demo.gif
|