Containers, images, volumes, and Docker Compose.
docker build -t name:tag .docker build -t myapp:1.0.0 --no-cache -f Dockerfile.prod .docker run -p 8080:80 -ddocker run -d --name api -p 3000:3000 --env-file .env myapp:1.0.0docker ps -a / docker statsdocker stats --no-stream --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"docker exec -it NAME shdocker exec -it api sh -c "cat /etc/hosts; env | grep DB_"docker logs -f --tail=100docker logs -f --tail=200 --timestamps apidocker cp src container:destdocker cp ./config.json api:/app/config.jsondocker image prune -adocker system df; docker system prune -af --volumesdocker image historydocker image history --no-trunc myapp:1.0.0FROM node:20-slimFROM node:20.11.0-alpine3.19 AS baseMulti-stage buildsFROM node:20 AS builder\nRUN npm ci && npm run build\nFROM node:20-slim\nCOPY --from=builder /app/dist ./distCOPY package*.json firstCOPY package.json package-lock.json ./\nRUN npm ci --only=production\nCOPY . .USER node / RUN adduserRUN addgroup -S app && adduser -S app -G app\nUSER appHEALTHCHECK instructionHEALTHCHECK --interval=30s --timeout=5s CMD curl -f http://localhost:3000/health || exit 1ARG vs ENVARG BUILD_VERSION\nENV APP_VERSION=$BUILD_VERSION NODE_ENV=production.dockerignorenode_modules\n.git\n.env\n*.log\ndist\n.nyc_outputENTRYPOINT vs CMDENTRYPOINT ["node"]\nCMD ["server.js"] # docker run img greet.js overrides CMDdocker compose up -d --builddocker compose up -d --build --remove-orphansdepends_on + healthcheckdepends_on: db: condition: service_healthyvolumes: named vs bindvolumes: - postgres_data:/var/lib/postgresql/data - ./src:/app/src:ronetworks: customnetworks: backend: driver: bridge; frontend: driver: bridgeenv_file: .envenv_file: - .env.${COMPOSE_ENV:-dev}docker compose scale / --scaledocker compose up -d --scale worker=5profiles: ["dev"]docker compose --profile debug up # starts services with profiles: [debug]docker push / docker pulldocker push registry.example.com/myapp:1.0.0docker scout / trivytrivy image --severity CRITICAL,HIGH myapp:1.0.0docker secret (Swarm)docker secret create db_password ./secret.txt; # available at /run/secrets/db_password--read-only / --cap-dropdocker run --read-only --cap-drop=ALL --cap-add=NET_BIND_SERVICE myapp