## 本地版 → 服务器版 核心修改
### 1. docker-compose.yml 修改
| 配置项 | 本地版 | 服务器版 |
|--------|--------|----------|
| nginx 端口 | `"80:80"` | `"8088:80"` |
| mysql 端口 | `"3306:3306"` | `"3307:3306"` |
| php 镜像 | `build: .` | `image: codeyoursmile/haozhanzhan:latest` |
| 挂载目录 | `- .:/var/www/html`(PHP和nginx都有) | **删除**(避免覆盖镜像内代码) |
| 网络 | 无 | `networks: app-network` |
| 重启策略 | 无 | `restart: unless-stopped` |
### 2. 服务器额外需要的文件
```
项目目录/
├── docker-compose.yml
└── docker/nginx.conf # nginx 配置文件
```
### 3. 开放端口
阿里云/腾讯云安全组放行:**8088** 端口
---
## 根本原因
1. **端口冲突**:宝塔占用 80、3306 → 改用 8088、3307
2. **挂载覆盖**:本地 `build:` + 挂载源码 → 服务器用现成镜像,**不能挂载** `.` 目录,否则清空镜像内代码
---
##附录:
###本地版 docker-compose.yml
services:
nginx:
image: nginx:alpine
ports:
- "80: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 # ⚠️ 请在生产环境修改为强密码
# 数据库用户名固定为 root
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql # 关键:数据持久化
volumes:
mysql_data:
### 服务器版docker-compose.yml
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: