## 一、本地开发版 `docker-compose.yml`
**特点:**
- 源码挂载,修改代码实时生效
- 适合开发调试
- 端口用 `8080`,避免冲突
```yaml
services:
nginx:
image: nginx:alpine
ports:
- "8080:80"
volumes:
- .:/var/www/html
- ./docker/nginx.conf:/etc/nginx/conf.d/default.conf
depends_on:
- php
php:
build: .
volumes:
- .:/var/www/html
mysql:
image: docker.1panel.live/library/mysql:8.0
container_name: mysql
restart: always
environment:
MYSQL_DATABASE: haozhanzhan
MYSQL_ROOT_PASSWORD: 123456
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql
volumes:
mysql_data:
```
---
## 二、服务器生产版 `docker-compose.prod.yml`
**特点:**
- 使用远程镜像,不挂载源码
- 避开宝塔端口(`8088`、`3307`)
- 添加网络隔离和自动重启
- 只挂载必要的配置文件
```yaml
services:
nginx:
image: nginx:alpine
ports:
- "8088:80"
volumes:
- ./docker/nginx.conf:/etc/nginx/conf.d/default.conf
depends_on:
- php
networks:
- app-network
restart: unless-stopped
php:
image: codeyoursmile/haozhanzhan:latest
networks:
- app-network
restart: unless-stopped
mysql:
image: docker.1panel.live/library/mysql:8.0
container_name: mysql
restart: always
environment:
MYSQL_DATABASE: haozhanzhan
MYSQL_ROOT_PASSWORD: 123456
ports:
- "3307:3306"
volumes:
- mysql_data:/var/lib/mysql
networks:
- app-network
networks:
app-network:
driver: bridge
volumes:
mysql_data:
```
---
## 三、使用方式
| 环境 | 文件 | 命令 |
|------|------|------|
| 本地开发 | `docker-compose.yml` | `docker-compose up -d` |
| 服务器生产 | `docker-compose.prod.yml` | `docker-compose -f docker-compose.prod.yml up -d` |
---
## 四、两个版本差异对照
| 配置项 | 本地开发版 | 服务器生产版 |
|--------|-----------|-------------|
| nginx 端口 | `8080:80` | `8088:80` |
| mysql 端口 | `3306:3306` | `3307:3306` |
| php 镜像 | `build: .` | `image: ...` |
| php 挂载 | `.:/var/www/html` | 无 |
| nginx 挂载 | `.:/var/www/html` | 无 |
| 网络 | 默认 | `app-network` |
| 重启策略 | 无 | `unless-stopped` |
---