搜索

📄 文章 📚 合集
热门搜索
🐘 PHP ⚡ Laravel 🎨 Vue.js ⚛️ React 📦 Yii 📘 JavaScript 🗄️ MySQL 🐳 Docker
返回合集

[板块7:Docker 容器化交付] - 06 -docker-compose.yml 适配服务器部署

代码示例
## 本地版 → 服务器版 核心修改

### 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:

🧸 adorable code

专注 PHP、JavaScript、Laravel、Vue.js、React、Yii 全栈开发。记录技术探索过程中的灵感与经验,分享工程实践洞见。

hello@adorablecode.com