在一个服务器上部署多个项目并使用 Docker 进行容器化管理,是非常常见且推荐的做法。你可以通过以下步骤来实现:
🧱 一、基本思路
一个服务器可以运行多个 Docker 容器,每个容器对应一个独立的项目。你只需要为每个项目编写各自的 Dockerfile 和 docker-compose.yml(可选),然后使用 Docker 命令或 Compose 工具分别启动。
📦 二、部署方式选择
✅ 方式一:使用 docker run 手动运行多个容器(适合简单场景)
# 示例:运行两个不同 Web 应用
docker run -d -p 8080:80 --name web1 my-web-app-1
docker run -d -p 8081:80 --name web2 my-web-app-2
注意端口映射不能冲突,如
-p 8080:80和-p 8081:80。
✅ 方式二:使用 docker-compose.yml 文件批量管理多个服务(推荐)
1. 创建多个项目目录结构如下:
/projects
├── project1/
│ ├── Dockerfile
│ └── docker-compose.yml
├── project2/
│ ├── Dockerfile
│ └── docker-compose.yml
└── ...
2. 每个项目下的 docker-compose.yml 示例
# project1/docker-compose.yml
version: '3'
services:
webapp1:
build: .
ports:
- "8080:80"
container_name: webapp1
# project2/docker-compose.yml
version: '3'
services:
webapp2:
build: .
ports:
- "8081:80"
container_name: webapp2
3. 分别进入各自项目目录并启动服务
cd /projects/project1
docker-compose up -d
cd /projects/project2
docker-compose up -d
🔐 三、网络与隔离
默认情况下,Docker 会使用桥接网络。如果你希望多个容器之间通信,可以创建自定义网络:
docker network create mynetwork
并在 docker-compose.yml 中指定网络:
services:
webapp1:
...
networks:
- mynetwork
networks:
mynetwork:
external: true
🌐 四、使用 Nginx 反向X_X多个项目(可选)
如果你希望通过域名访问多个项目,建议使用 Nginx + Docker 配合:
示例 Nginx 配置:
server {
listen 80;
server_name app1.example.com;
location / {
proxy_pass http://localhost:8080;
}
}
server {
listen 80;
server_name app2.example.com;
location / {
proxy_pass http://localhost:8081;
}
}
也可以将 Nginx 也容器化运行:
docker run -d -p 80:80 --name nginx
-v /path/to/nginx.conf:/etc/nginx/nginx.conf
nginx
🛠️ 五、常用命令总结
| 功能 | 命令 |
|---|---|
| 查看运行中的容器 | docker ps |
| 查看所有容器 | docker ps -a |
| 构建镜像 | docker build -t myapp . |
| 启动 compose 项目 | docker-compose up -d |
| 停止 compose 项目 | docker-compose down |
| 日志查看 | docker logs <container_name> |
📝 六、最佳实践建议
- 每个项目放在独立目录中。
- 使用
docker-compose管理服务更方便。 - 为每个项目分配不同的端口,避免冲突。
- 使用环境变量配置不同项目的参数(如数据库连接等)。
- 考虑使用
.env文件统一管理配置。 - 如果有数据库等依赖服务,也在
docker-compose.yml中声明。
💡 七、示例:完整项目目录结构
/myapps
├── backend-api/
│ ├── Dockerfile
│ └── docker-compose.yml
├── frontend/
│ ├── Dockerfile
│ └── docker-compose.yml
├── admin/
│ ├── Dockerfile
│ └── docker-compose.yml
└── nginx/
├── nginx.conf
└── docker-compose.yml
✅ 总结
| 步骤 | 内容 |
|---|---|
| 1 | 准备每个项目的 Dockerfile |
| 2 | 编写对应的 docker-compose.yml |
| 3 | 使用 docker-compose up -d 启动服务 |
| 4 | 使用 Nginx 或直接通过不同端口访问 |
| 5 | 维护和监控容器日志 |
如果你提供具体项目类型(如 Node.js、Python、Java、Vue、React 等),我可以给出更详细的 Dockerfile 示例和部署建议。需要的话请告诉我 😊
云计算导航