当前位置: 首页 > news >正文

mac 搭建docker-compose,部署docker应用

Mac 上搭建 Docker / Docker Compose 并部署应用 的“从零到可用”清晰步骤(适配 Intel 与 Apple Silicon)。我用两个示例演示:n8n 单服务web+db 典型组合。直接跟着做即可。

1) 安装与准备

方案 A:Docker Desktop(最省事,含 Compose v2)

  1. 去官网下载并安装 Docker Desktop for Mac(M 系列或 Intel 版本对应下载)。

  2. 安装后打开 Docker Desktop,等待右上角鲸鱼图标稳定(Daemon 已就绪)。

  3. 终端验证:

    docker --version
    docker compose version
    

说明:Compose v2 命令为 docker compose ...(空格)。如果你更习惯旧语法 docker-compose,Docker Desktop 也会附带兼容层。

方案 B:Colima(轻量开源替代)

如果不想装 Desktop,可用 Homebrew+Colima:

brew install colima docker docker-compose
colima start
docker --version
docker compose version

Apple Silicon 如需 x86 镜像,可用 colima start --arch x86_64(性能略降)。

2) 目录与权限

为你的项目建一个目录并放置 Compose 文件:

mkdir -p ~/apps/myapp && cd ~/apps/myapp

注意 Mac 文件共享:默认只有你的用户目录是可挂载的(如 ~/apps)。把 volumes: 指向用户目录内的路径,避免权限问题。

3) 示例一:n8n(单服务)

~/apps/n8n/ 下新建 docker-compose.yml

services:n8n:image: n8nio/n8n:latestcontainer_name: n8nports:- "5678:5678"environment:- N8N_SECURE_COOKIE=false- GENERIC_TIMEZONE=Asia/Shanghai   # 按需改user: "${UID:-1000}:${GID:-1000}"volumes:- ./data:/home/node/.n8nrestart: unless-stopped

启动:

cd ~/apps/n8n
# 让容器以你当前用户身份运行(避免生成 root 文件)
export UID && export GID
docker compose up -d
docker compose logs -f

访问:http://localhost:5678

迁移自你之前的命令:这里等价于“后台运行、所有网段可访问(默认映射到 0.0.0.0)、持久化数据卷”的 Compose 版本。

4) 示例二:Web + Postgres(典型两容器)

~/apps/webstack/ 下新建 .envdocker-compose.yml

.env

POSTGRES_PASSWORD=secret123
POSTGRES_DB=appdb
POSTGRES_USER=appuser
TZ=Asia/Shanghai

docker-compose.yml

services:db:image: postgres:16container_name: webstack-dbenvironment:- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}- POSTGRES_USER=${POSTGRES_USER}- POSTGRES_DB=${POSTGRES_DB}- TZ=${TZ}volumes:- ./pgdata:/var/lib/postgresql/datahealthcheck:test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER"]interval: 5stimeout: 3sretries: 10restart: unless-stoppedweb:image: nginx:alpinecontainer_name: webstack-webports:- "8080:80"volumes:- ./site:/usr/share/nginx/html:rodepends_on:db:condition: service_healthyrestart: unless-stopped

初始化并启动:

mkdir -p ~/apps/webstack/site ~/apps/webstack/pgdata
echo "<h1>Hello from Nginx</h1>" > ~/apps/webstack/site/index.html
cd ~/apps/webstack
docker compose --env-file .env up -d

访问:http://localhost:8080

5) 常用操作

# 查看运行中容器
docker ps# 查看项目服务状态
docker compose ps# 查看日志
docker compose logs -f           # 全部
docker compose logs -f web       # 指定服务# 构建(如果有 Dockerfile)
docker compose build# 停止/删除
docker compose down              # 停并删容器(不删卷)
docker compose down -v           # 连带卷一起删(谨慎)

6) Apple Silicon(M1/M2/M3)提示

  • 优先选择 多架构镜像(带 linux/arm64)。

  • 遇到只支持 x86_64 的镜像:

    • Docker Desktop:设置里启用 Use Rosetta for x86/amd64 emulation(性能受影响)。

    • 或手动拉取并指定平台:

      docker pull --platform=linux/amd64 someimage:tag
      docker run --platform=linux/amd64 ...
      
  • 自建镜像建议用 buildx 出多架构包:

    docker buildx create --use
    docker buildx build --platform linux/amd64,linux/arm64 -t your/repo:tag --push .
    

7) 生产化加强(可选)

  • Traefik/Nginx 反向代理 + HTTPS:用 Traefik 作为网关,按域名路由到各服务,自动签发/续签证书。
  • 数据持久化:把数据库、应用数据目录都映射到 ./data 等路径,并纳入 Time Machine/备份。
  • 备份:数据库用 pg_dump/mysqldump + cron(可用一个“backup”服务容器)定时备份至本地或对象存储。
  • .env 管理:敏感变量放 .env,不要提交到仓库。

8) 常见问题排查

  • 卷权限问题:挂载到你用户目录;必要时在服务上加 user: "${UID}:${GID}"
  • 端口被占用:换映射端口,如 "8081:80"
  • 镜像架构不匹配:指定 --platform 或启用 Rosetta。
  • 文件共享失败(Docker Desktop):Settings → Resources → File Sharing 里把工程目录加入可共享路径。
http://www.lryc.cn/news/626479.html

相关文章:

  • Android 入门到实战(三):ViewPager及ViewPager2多页面布局
  • linux内核 - 内存管理单元(MMU)与地址翻译(二)
  • 0820 SQlite与c语言的结合
  • Mac编译Android AOSP
  • 【密码学实战】X86、ARM、RISC-V 全量指令集与密码加速技术全景解析
  • deque的原理与实现(了解即可)
  • HTML5中秋网站源码
  • 基于RK3568储能EMU,储能协调控制器解决方案
  • 生产电路板的公司有哪些?国内生产电路板的公司
  • MySQL 8.x的性能优化文档整理
  • RK3576赋能无人机巡检:多路视频+AI识别引领智能化变革
  • 【38页PPT】关于5G智慧园区整体解决方案(附下载方式)
  • 无人机图传 便携式5G单兵图传 HDMI图传设备 多卡5G单兵图传设备详解
  • 元宇宙的网络基础设施:5G 与 6G 的关键作用
  • 计算机视觉(二)------OpenCV图像视频操作进阶:从原理到实战
  • WIFI国家码修改信道方法_高通平台
  • 开发避坑指南(29):微信昵称特殊字符存储异常修复方案
  • 多模型创意视频生成平台
  • 微美全息(NASDAQ:WIMI):以区块链+云计算混合架构,引领数据交易营销科技新潮流
  • Linux: network: arp: arp_accept
  • imx6ull-驱动开发篇29——Linux阻塞IO 实验
  • Java并发容器详解
  • ubuntu go 环境变量配置
  • uv,下一代Python包管理工具
  • ⭐CVPR2025 给3D高斯穿 “UV 衣” 框架[特殊字符]
  • grpc 1.45.2 在ubuntu中的编译
  • 【软考架构】软件工程:软件项目管理
  • 氢元素:宇宙基石与未来能源之钥的多维探索
  • HTML <meta name=“color-scheme“>:自动适配系统深色 / 浅色模式
  • 简笔成画:让AI绘画变得简单而有趣