Tool.Yun
Handy værktøjer for udviklere
Beskær billede
Billede til SVG (potrace)
Billedfarveinverter
Billedformatkonverter
Billedsammenligning
Billedstørrelsesjustering
EXIF/Metadata/GPS/JPEG-kvalitetslæser for billeder
Fjern EXIF
Fjern billedets baggrund
GIF til MP4
HEIC-konverter
ICO/PNG-konverter
Kamera optager
OCRize billede og PDF
SVG-forhåndsvisning
Vandmærke
AGE Kryptografi
Argon2 Hasher
Bcrypt
Bech32-encoder/dekoder
CRC-beregner
CSR-generator
Certifikat-/nøgleparser
Dekryptering af Ansible Vault-kryptering
ECDSA-nøglepargenerator
Ed25519 nøglepargenerator
Filhasher
HMAC generator
Hash-tekst
JWT fortolker
JWT-generator
Jasypt-strengkryptering
Krypter / dekrypter tekst
Niceware Bytes til adgangskode
PGP-filkryptering
PGP-kryptering
PGP-nøglegenerator
Paseto/PASERK Lokal
Paseto/PASERK Offentlig/Privat
RSA nøglepar generator
RSA-kryptering
RSA/DSA/ECDSA-underskriver og -verifikator
SAML Parser
SSL-certifikatkonverter
Shamirs hemmelige deling
X509 certifikatgenerator
BMI-beregner
Forklar Shell-kommandoen
IBAN validator og fortolker
IES belysningsretningslinjer
ISBN-validator og parser
ISO 3166 landekodesøgning
ISO 639-søger
Kalenderkonverter
Kompatibilitet med softwarelicenser
Kreditkorttjekker
Luhn-validator
Løbetempoberegner
Momsnummervalidator
Online ordbog
RMB Store Bogstaver Konverter
SLA-beregner
Telefon fortolker og formatter
Unicode-søgning
Valutaomregner
Cron/Ugedagsalarm
Dageberegner
Dato+Varighedsberegner
Dato-tid konverter
ETA beregner
Hvilken dag?
ICAL-filparser
ICAL-generator
Nedtælling
Stop-ur
TTL-beregner
Tidsalarm
Tidszonekonverter
Ugetalkonverter
Varighedsberegner
iCal-fusion
Docker Compose Format Converter
Docker Compose Validator
Docker Compose til .env-fil
Docker Compose til Docker-kørselskonverter
Docker Compose til Quadlets
Docker Pangolin-etiketter
Docker run til Docker compose konverter
Docker-billeddownloader
Docker-inspektion for at køre Docker
Docker-kørsel til Kubernetes
Docker-kørsel til Quadlets
Docker-skrivning til Kubernetes
Dockerfile-etiketgenerator
Kubernetes RBAC-generator
Traefik Docker Compose Maker
Amortiseringsberegner
Accelerationskonverter
Arealenhedsomregner
Energienhedsomregner
Fitnesscomputer
Frekvensomformer
Hastighedskonverter
Illuminanskonverter
Kraftenhedskonverter
Længdeenhedskonverter
Madenergikonverter
Masseenhedsomregner
SI-præfikser konverter
Strømomformer
Temperaturkonverter
Trykenhedskonverter
Vinkelenhedskonverter
Volumenenhedskonverter
Volumenstrømningshastighedskonverter
Adgangskodegenerator
BIP39 adgangskode generator
Diceware adgangskodegenerator
Generator for tilfældige tal
NanoID-generator
Numeronym generator
OTP kode generator
Postkodegenerator
Token generator
UUID generator
UUID-konverter
CSV til JSON
JS til JSON konverter
JSON Linter
JSON difference
JSON minificering
JSON prettify og formatér
JSON til .env
JSON til C#
JSON til CSV
JSON til JS konverter
JSON til Java-enhed
JSON til MessagePack
JSON til TOML
JSON til TS
JSON til XML
JSON til YAML konverter
JSON til at gå
JSON til data
JSON til objekt
JSON-editor
JSON-fusion
JSON-sorteringsmaster
JSON-udjævning/ophævelse af udjævning
Jq/JSONPath-tester
Json Escaper/Unescaper
Json til PHP-array
Json til PHP-kode
Json til Python
Json til SQL DDL
Json til skema
Json-forespørgsel
Json-strengkonverter
Json-størrelsesanalysator
Meddelelsespakke til JSON
ObjGen til JSON
PHP-Array til JSON
tools.json-patch.name
Base64 Hex array-encoder/dekoder
Base64 filkonverter
Base64 streng koder/afkoder
Csv til data
E-mail normalisering
Egenskabskonverter
Energiforbrugs- og udgiftscomputer
Excel til data
Geografiske koordinatkonverter
Heltalsbase-konverter
Konverter til datalagringsenhed
Konverter til konvolutvariabler
Mange enheder konverter
Romertal konverter
Tekst til UTF-8 binær
Tekst til Unicode
Torrent til magnet
ULID generator
Unicode-tegn til Java-enheder konverter
dBm mW-konverter
Binær lommeregner
Drikkepengeberegner
Matematik OCR
Matematik evalueringsværktøj
Matematikformatkonverter
Trigonometrisk/ligningskurvevisualisator
Cron-udtryksbygger
Benchmark bygger
Billedformatberegner
Geografisk afstandsberegner
Procent lommeregner
Epub til Markdown
Forhåndsvisning af Markdown
Generator for markdown-tabel
HTML til markdown
Indsæt som Markdown
Markdown Lorem Ipsum
Markdown Table Pretifier
Markdown til HTML
Markdown til tekst
Markdown-editor
Markdown-indholdsfortegnelsesgenerator
Nedskrivning til DOCX
Nedskæring til data
Nedsættelsesforskel
tools.markdown-format-converter.name
ARPA-dekoder
Apache LogRotate Generator
BIMI DNS-generator
Basic auth generator
Chmod beregner
Cloudflare DNS/RDAP-forespørgsler
Crontab generator
DKIM DNS-generator
DMARC DNS-generator
DNS-forespørgsler
DNSBL-tjekker
Dataoverførselshastighedsberegner
FStab-generator
Generator for nedlukningskommandoer
HAS Desinfektionsmiddel
HDD-lommeregner
HTAccess-generator
Heltal til IPv4/IPv6
Htpasswd/htaccess-generator
IP-geografisk placering
IP-undernets ekskluderingsberegner
IPv4 adressekonverter
IPv4 rækkeudvider
IPv4 subnet beregner
IPv4-6/IPRange/CIDR i IPRange/CIDR/IPMaske
IPv4-undernetliste
IPv4/6-område til CIDR(er)-beregner
IPv6 ULA generator
IPv6-adressekonverter
Iptables Generator
Ipv4/6 CIDR til IP-områdeberegner
Ipv6-subnetberegner
Kodeords styrke analysator
Krøllekommandogenerator
Linearisering af Shell-kommandoer
MAC adresse generator
MAC-adressekonverter
Mikrofontester
Min IP-adresse
Multi-link downloader
Nginx-formateringsprogram
Option43-generator
PTR DNS-generator
Ping
Portnumre
Punycode-konverter
RAID-beregner
RAID-pålidelighedsberegner
Rsync-generator
SIP-autorisation
SPF DNS-generator
Shell-kommandoformatering
Slå MAC adresse op
TCP/UDP-porttester
Tilfældig port-generator
UFW-kommandogenerator
Visuel subnetberegner
WPA PSK-generator
Websocket-testning
Whois-tjekker
Wireguard-konfigurationsgenerator
X-VR-SpamCause-dekoder
ZPOOL RAID-beregner
ZPool snydeark
Zxcvbn adgangskodestyrke
firewalld kommandolinjegenerator
tools.restic-command-generator.name
tools.url-redirection-checker.name
HTML til PDF
PDF signaturkontrol
PDF-kompressor
PDF-tekstudtrækker
Pdf Linearize/FastWeb
Pdf-dekryptering og oplåsning
Pdf-kryptering
Pdf-sammenkædning
Pdf-sideudtrækker
ActiveDirectory LDAP-egenskabssøger
Cookie-parser
DMARC-rapportanalysator
DNS-forplantningstest
DNS-tester
Død pixel-tester
E-mail-parser
EMV TLV-dekoder
ETH-transaktionsdekoder
Filtypedetektor
Flydende kommatalkonverter
GZip/Deflate-konverter
HTTPS-tester
Hex-encoder/dekoder
Keycode info
MIME-kodningskonverter
Maskering af følsomme data
Middle-Endian-konverter
Modstandsberegner
MongoDB ObjectId-konverter
Nmap-kommandobygger
Outlook MSG-parser
Outlook Safelink-dekoder
Parketfiler Læser
Parser af afviste e-mails
RJ45 Cat6-ledningsføringssnydark
SMART Raw-konverter
Seriel portkonsol
SharePoint Share URL-afkoder
Snefnug-ID-udtrækker
TCDump-generator
Teksttegnsætdetektor/dekoder
URL fortolker
URL-bygger
Udvider af korte URL'er
键盘测试器
Almindelig Regex-snydeark
Bash snydeark
CSS-selektorer snydeark
Docker Compose cheatsheet
Docker SWARM snydeark
Docker-snydeark
Dockerfile snydeark
Git Semantic Commit Cheatsheet
Git snydeark
JSONPath Syntaks Cheatsheet
Jq snydeark
K8s snydeark
Markdown-snydeark
Nano-snydeark
Nginx snydeark
Powershell snydeark
Regex snydeark
Sed snydeark
Snydeark til skærmkommandoer
Tmux-kommando-snydeark
VIM-snydeark
XPath-syntaks-cheatsheet
Zellij-kommando-snydeark
chmod-kommando-snydeark
Kortvælger
Lykkehjul
Møntflipper
Terningkaster
GTIN-validator
QR kode generator
QR-kodedekoder
QR-kontaktinfogenerator
Stregkodegenerator
Stregkodelæser
WiFi QR kode generator
tools.epc-qrcode-generator.name
TOML Linter
TOML til JSON
TOML til YAML
AI-promptsplitter
ASCII kunsttekstgenerator
Billede til ASCII-kunst
Case konverter
Citationsgenerator
Emoji vælger
Finder af duplikerede linjer
Forskellige ord
GPT-token-encoder/dekoder
GPT-tokenestimator
Havfrueeksportør
I og L Checker
JSON til TOON
Levenshtein-lommeregner
Liste konverter
Lister Sammenlign
Lorem ipsum generator
Mappestrukturdiagram
Morsekodekonverter
Pak filer til AI
RSVP-læser
Regex-tester
Runekonverter
Sammenlign skrifttyper
Sed-kommandogenerator
Smart teksterstatning og linjebryder
Social linkdeler
Streng obfuskator
TOON til JSON
Tabulator til mellemrum
Tastaturlayoutkonverter
Tekst difference
Tekst til NATO-alfabetet
Tekst til Unicode-navne
Tekstoversætter
Tekststatistik
Tilfældig linjevælger
Udtræk tekst fra HTML
Unicode til GSM-7
Unicode-formatering
Zalgo Generator/Banner
ANSI Escape Tester
API-tests
CSS/JS Forskøn og minimer
Citatkonverter
Cli-kommandoeditor
Databaseoprettelsesværktøj
Databasetabelgenerator
Dataforfalsker
Django Secret Generator
Favicon-generator
Fildeler
GitIgnore-generator
Gitaattributgenerator
HEX-filkonverter
Javascript Obfuscator
Javascript Prettifier
Javascript Unfuscator/Unpacker
Json til Protobuf
Json til SQL INSERT
Json til Typescript
K6 load test script generator
Kode/Scripts-markør
Krøllekonverter
Mailto-generator
Open graph meta generator
Picomatch-tester
Pomodoro-timer
SQL prettify og formater
SQL-minifikator
SQL-parametergenerator
Stacktrace pænere
Strengeudløser
Stringgenerator til databaseforbindelse
Swagger UI-tester
Billede til CSS
CSS Gradientgenerator
CSS XPath-konverter
CSS-enhedskonverter
CSS-pænere
Enhedsoplysninger
Farve konvertering
Farvehjul
Farvekontrastkontrol
HTML WYSIWYG editor
HTML til XHTML
HTML til data
HTML-minimer
HTTP status koder
Html-forsmagningsværktøj
Html-renser
Kod/afkod URL-formatteret strenge
MIME typer
REM Pixel-konverter
SVG pladsholder generator
Slugify streng
URL-fanger
URL-renser
UTM URL-generator
Undslip HTML
Url-tekstsøgningsfragmentopretter
User-agent fortolker
ObjGen til HTML
XML formatter
XML til JSON
XML-linter
XPath-tester
XSLT-tester
YAML prettify og format
YAML til JSON konverter
YAML til TOML
YAML-fusion
YAML-udjævning/ophævelse af udjævning

Docker Compose cheatsheet

Docker Compose-format snydeark

Docker Compose describes a multi-container application in one YAML file and runs it with a single command. The file declares services (containers), plus the networks, volumes, secrets and configs they use.

ℹ️ The version: key at the top is obsolete — the Compose Spec ignores it. Start the file with services:.

📁 File Names & Precedence

FileRole
compose.yamlThe preferred name (compose.yml also works)
docker-compose.yamlLegacy name, still supported
compose.override.yamlMerged on top of the base file automatically
-f a.yaml -f b.yamlExplicit list; later files override earlier ones
.envVariables for interpolation, read from the project directory
# check what Compose actually resolved, after merges and interpolation
docker compose config

# use a specific set of files
docker compose -f compose.yaml -f compose.prod.yaml up -d

YAML rules that bite

  • Two spaces per indent level, never tabs
  • Keys and values are case-sensitive
  • Lists use -; quote any string containing :, #, {, } or a leading *
  • yes/no/on/off are booleans — quote them if you mean the words

🧱 Minimal Structure

services:
  web:
    image: nginx:1.27
    ports:
      - '8080:80'
    depends_on:
      - api

  api:
    build: .
    environment:
      DATABASE_URL: postgres://db:5432/app
    networks:
      - backend

networks:
  backend:

volumes:
  db-data:

⚙️ Service Options

services:
  app:
    # where the image comes from
    image: myapp:1.2
    build: .
    pull_policy: always

    # identity and lifecycle
    container_name: myapp
    hostname: app
    restart: unless-stopped
    init: true
    stop_grace_period: 30s

    # what it runs
    entrypoint: ['/entrypoint.sh']
    command: ['node', 'server.js']
    working_dir: /app
    user: '1000:1000'

    # configuration
    environment:
      NODE_ENV: production
      API_KEY: ${API_KEY}
    env_file:
      - .env
      - .env.production

    # connectivity
    ports:
      - '8080:80'
    expose:
      - '9000'
    networks:
      - frontend
    extra_hosts:
      - 'host.docker.internal:host-gateway'
    dns:
      - 1.1.1.1

    # storage
    volumes:
      - db-data:/var/lib/data
      - ./src:/app/src:ro
    tmpfs:
      - /tmp

    # ordering and health
    depends_on:
      db:
        condition: service_healthy
    healthcheck:
      test: ['CMD', 'curl', '-f', 'http://localhost/health']
      interval: 30s
      timeout: 5s
      retries: 3
      start_period: 20s

    # host access and limits
    cap_add:
      - SYS_PTRACE
    devices:
      - /dev/dri:/dev/dri
    ulimits:
      nofile: 65535
    deploy:
      resources:
        limits:
          cpus: '1.5'
          memory: 512M

    # bookkeeping
    labels:
      com.example.team: platform
    logging:
      driver: json-file
      options:
        max-size: '10m'
        max-file: '3'

🏗 Build Options

services:
  app:
    build:
      context: .
      dockerfile: docker/Dockerfile
      target: production
      args:
        NODE_VERSION: '22'
      cache_from:
        - myapp:cache
      secrets:
        - npmrc
      platforms:
        - linux/amd64
        - linux/arm64
    image: myapp:1.2 # the name given to the built image

📦 Volumes

services:
  db:
    volumes:
      # named volume — managed by Docker, survives 'down'
      - db-data:/var/lib/postgresql/data
      # bind mount — a host path, read-only
      - ./config:/etc/app:ro
      # anonymous volume — keeps node_modules out of the bind mount above
      - /app/node_modules
      # long syntax
      - type: bind
        source: ./src
        target: /app/src
        read_only: true

volumes:
  db-data:
  shared:
    external: true # created outside Compose
  nfs-data:
    driver_opts:
      type: nfs
      o: addr=10.0.0.10,rw
      device: ':/exports/data'

🌐 Networks

services:
  web:
    networks:
      - frontend
  api:
    networks:
      frontend:
        aliases:
          - api.internal
      backend:

networks:
  frontend:
    driver: bridge
  backend:
    internal: true # no outbound access
  existing:
    external: true
    name: some-other-network

💡 Compose creates a default network per project and every service joins it, so containers already reach each other by service name. Declare networks when you want to separate things.

🔀 Ports

services:
  web:
    ports:
      - '8080:80' # host:container
      - '127.0.0.1:8080:80' # bind to one interface only
      - '8080-8090:80-90' # a range
      - '80' # random host port
      - target: 80 # long syntax
        published: '8080'
        protocol: tcp
        mode: host

🧬 Environment Variables

services:
  app:
    environment:
      # map form (preferred)
      LOG_LEVEL: debug
      # take the value from the shell or .env
      API_KEY: ${API_KEY}
      # with a default, and a hard requirement
      PORT: ${PORT:-3000}
      DB_URL: ${DB_URL:?DB_URL must be set}
    env_file:
      - path: .env.production
        required: false
# variables come from the shell, .env, and --env-file, in that order of precedence
API_KEY=abc docker compose up -d
docker compose --env-file .env.staging up -d

🩺 Healthchecks & Startup Order

depends_on on its own only waits for the container to start. Wait for it to be healthy instead:

services:
  db:
    image: postgres:16
    healthcheck:
      test: ['CMD-SHELL', 'pg_isready -U postgres']
      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 30s

  api:
    image: myapi
    depends_on:
      db:
        condition: service_healthy # or service_started, service_completed_successfully

🔄 Restart Policies

PolicyBehaviour
noNever restart (the default)
on-failureRestart only on a non-zero exit — on-failure:5 to cap tries
alwaysAlways restart, including after a daemon restart
unless-stoppedLike always, but stays stopped if you stopped it yourself

🧩 Profiles

Profiles keep optional services out of the way until you ask for them.

services:
  web:
    image: nginx # no profile: always started

  debug:
    image: busybox
    command: top
    profiles: [debug]

  seed:
    image: myapp
    command: npm run seed
    profiles: [tools]
# start the default services plus one profile
docker compose --profile debug up -d

# several at once
docker compose --profile debug --profile tools up -d

# COMPOSE_PROFILES works too
COMPOSE_PROFILES=debug,tools docker compose up -d

👀 Watch Mode

docker compose watch syncs or rebuilds automatically as you edit — a dev loop without bind-mount surprises.

services:
  web:
    build: .
    develop:
      watch:
        - action: sync
          path: ./src
          target: /app/src
        - action: rebuild
          path: package.json
        - action: sync+restart
          path: ./config
          target: /etc/app
docker compose watch

♻️ Reuse: include, extends & anchors

# pull in another compose file as if it were written here
include:
  - path: ./monitoring/compose.yaml

services:
  # inherit another service's definition
  worker:
    extends:
      file: common.yaml
      service: base-app
    command: ["node", "worker.js"]

# YAML anchors for repeated blocks
x-logging: &default-logging
  driver: json-file
  options:
    max-size: "10m"

services:
  api:
    logging: *default-logging
  web:
    logging: *default-logging

🔐 Secrets & Configs

File-based secrets work in plain Compose: each one is mounted read-only at /run/secrets/<name>. External secrets and configs require Swarm.

services:
  db:
    image: postgres:16
    environment:
      POSTGRES_PASSWORD_FILE: /run/secrets/db_password
    secrets:
      - db_password
    configs:
      - source: pg_conf
        target: /etc/postgresql/postgresql.conf

secrets:
  db_password:
    file: ./db_password.txt
  api_token:
    external: true # Swarm only

configs:
  pg_conf:
    file: ./postgresql.conf

🖥 GPU & Device Access

services:
  # NVIDIA — needs the NVIDIA Container Toolkit on the host
  cuda-app:
    image: nvidia/cuda:12.4.1-base-ubuntu22.04
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all # or: device_ids: ["0"]
              capabilities: [gpu]

  # Intel iGPU — VAAPI/OpenCL through the render device
  igpu-app:
    image: intel/openvino
    devices:
      - /dev/dri:/dev/dri
    group_add:
      - video

🚀 Everyday Commands

# start everything in the background
docker compose up -d

# rebuild the images first
docker compose up -d --build

# start one service and what it depends on
docker compose up -d <service>

# recreate containers even if nothing changed
docker compose up -d --force-recreate

# stop and remove containers and networks
docker compose down

# also remove the named volumes and local images
docker compose down -v --rmi local

# what is running, including health
docker compose ps

# follow the logs
docker compose logs -f
docker compose logs -f --tail 100 <service>

# a shell inside a running service
docker compose exec <service> sh

# a one-off container for a task
docker compose run --rm <service> npm test

# rebuild, pull, restart
docker compose build --no-cache
docker compose pull
docker compose restart <service>

# scale a stateless service
docker compose up -d --scale worker=3

# validate and print the effective configuration
docker compose config
docker compose config --services

# processes and resource usage
docker compose top
docker compose stats

⚔️ Compose vs Swarm Stacks

Both read a Compose file, but docker stack deploy honours a different subset of it.

Keydocker composedocker stack deploy
build:✅ builds locally❌ ignored — push the image to a registry first
restart:✅❌ use deploy.restart_policy
depends_on:✅❌ ignored — rely on health checks and retries
profiles:✅❌
develop.watch:✅❌
deploy.replicas/placement❌ ignored✅ this is how you scale
configs: / external secrets:❌ external ones need Swarm✅
healthcheck:✅✅ also drives rescheduling
volumes: / networks:✅✅ (overlay networks in Swarm)

🧭 Keep compose.yaml for local development and a separate stack.yaml for Swarm, or put the Swarm-only bits in an override file.

📚 Resources

  • Compose file reference
  • docker compose CLI reference
  • Compose watch
  • Environment variables and interpolation
  • NVIDIA Container Toolkit