docker配置入门知识

1. ${NODE_ENV:-production} 语法解释

这是Docker Compose的环境变量替换语法:

  • ${NODE_ENV:-production} 表示:如果环境变量 NODE_ENV 存在且不为空,则使用 NODE_ENV 的值;否则使用默认值 production
  • :- 是默认值操作符
  • 等价于:NODE_ENV=${NODE_ENV:-production}

示例:

bash 复制代码
# 如果 .env 文件中有 NODE_ENV=development
# 则实际值为 development

# 如果 .env 文件中没有 NODE_ENV 或为空
# 则使用默认值 production

2. Docker服务重启和更新

Docker不会自动监听文件变化,需要手动重启:

修改docker-compose.yaml后:

bash 复制代码
# 停止所有服务
docker-compose down

# 重新构建并启动
docker-compose up --build -d

# 或者只重启特定服务
docker-compose restart app

修改Dockerfile后:

bash 复制代码
# 强制重新构建镜像
docker-compose build --no-cache app

# 然后启动
docker-compose up -d

修改应用代码后(如果使用卷挂载):

bash 复制代码
# 代码修改会自动同步到容器,但需要重启应用进程
docker-compose restart app

# 或者进入容器手动重启
docker-compose exec app pnpm run start:dev

3. restart: unless-stopped 含义

这是Docker容器的重启策略:

策略 说明
no 不自动重启(默认)
always 总是重启,无论退出状态如何
on-failure 只在非零退出状态时重启
unless-stopped 总是重启,除非手动停止

unless-stopped 的优势:

  • 容器异常退出时自动重启
  • 系统重启后自动启动容器
  • 手动停止后不会自动重启(避免干扰调试)

4. 完整的重启流程示例

bash 复制代码
# 1. 停止所有服务
docker-compose down

# 2. 查看当前状态
docker-compose ps

# 3. 重新构建并启动
docker-compose up --build -d

# 4. 查看日志
docker-compose logs -f app

# 5. 检查服务状态
docker-compose ps

5. 开发环境建议

对于开发环境,建议使用卷挂载来避免频繁重建:

yaml 复制代码
services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    volumes:
      - .:/app                    # 代码同步
      - /app/node_modules         # 避免覆盖依赖
    command: pnpm run start:dev   # 开发模式,支持热重载

这样代码修改后,只需要重启应用进程,不需要重新构建镜像。

相关推荐
小陈phd12 小时前
混合知识库搭建:本地Docker部署Neo4j图数据库与Milvus向量库
数据库·docker·neo4j
Wpa.wk13 小时前
容器编排 - 了解K8s(pod, deployment,service,lable等概念)
经验分享·测试工具·docker·云原生·容器·kubernetes
Wpa.wk15 小时前
容器编排 - K8s - 配置文件参数说明和基础命令
经验分享·测试工具·docker·云原生·容器·kubernetes
LCG米18 小时前
基于PyTorch的TCN-GRU电力负荷预测:从多维数据预处理到Docker云端部署
pytorch·docker·gru
Warren9819 小时前
接口测试理论
docker·面试·职场和发展·eureka·ansible
杭州杭州杭州19 小时前
Docker
运维·docker·容器
等什么君!21 小时前
Docker 数据卷:MySQL 数据同步实战
运维·docker·容器
礼拜天没时间.21 小时前
《Docker实战入门与部署指南:从核心概念到网络与数据管理》:环境准备与Docker安装
运维·网络·docker·容器·centos
风流倜傥唐伯虎1 天前
Windows 版 Docker 的 Linux 环境(docker-desktop)与 builder-jammy-base:latest 镜像核心区别
linux·docker·容器
Ha_To1 天前
2026.1.30 搭建docker仓库
运维·docker·容器