收起左侧

Docker Compose 路径与端口映射配置指南

8
回复
1503
查看
[ 复制链接 ]

6

主题

46

回帖

115

牛值

社区共建团

社区上线纪念勋章社区共建团荣誉勋章

2025-2-26 13:51:48 显示全部楼层 阅读模式

一、基础结构 Docker Compose 通过 docker-compose.yml 文件定义服务,关键配置字段: • ports : 配置端口映射 • volumes : 配置路径映射

示例基础模板:

version: '3.8'

services:

  web:
  
   image: nginx:latest
  
   ports:
  
    - "8080:80"
  
   volumes:
  
    - ./html:/usr/share/nginx/html

二、端口映射配置

1、基础语法 ports:


- "[宿主机IP:]宿主机端口:容器端口"

- "容器端口" # 自动分配宿主机端口

2、配置示例

services:

  webapp:

    image: my-web-app

    ports:

      - "80:8080"                # 宿主机80 → 容器8080

      - "127.0.0.1:3000:3000"    # 仅本地访问

      - "443"                    # 随机分配宿主机端口

3、特殊格式

# 长格式配置(支持高级选项)

ports:

  - target: 80       # 容器端口

    published: 8080  # 宿主机端口

    protocol: tcp    # 协议类型

    mode: host       # 主机模式

三、路径映射配置

1、基础语法 volumes:

- "宿主机路径:容器路径[:权限]"

- "命名卷:容器路径"

2、配置示例

services:

  database:

    image: mysql:5.7

    volumes:

      - /var/lib/mysql_data:/var/lib/mysql          # 绝对路径

      - ./config:/app/config                        # 相对路径

      - app-data:/data                              # 命名卷

      - /etc/hosts:/etc/hosts:ro                    # 只读权限


volumes:# 声明命名卷(Docker会自动创建)

  app-data:

3、常用模式对比

类型 示例 特点
绝对路径 /host/path:/container 明确指定宿主机路径
相对路径 ./config:/app/config 相对于 compose 文件位置
命令卷 db-data:/var/lib/mysql 数据持久化,便于管理
匿名卷 /var/lib/mysql 自动生成卷名,不易追踪

四、完整组合示例

version: '3.8'


services:

  web:

    image: nginx:alpine

    ports:

      - "80:80"

      - "443:443"

    volumes:

      - ./nginx.conf:/etc/nginx/nginx.conf

      - ./logs:/var/log/nginx

      - static-data:/usr/share/nginx/html


  db:

    image: mysql:5.7

    environment:

      MYSQL_ROOT_PASSWORD: example

    ports:

      - "3306:3306"

    volumes:

      - mysql-data:/var/lib/mysql


volumes:

  static-data:

  mysql-data:

五、验证配置 1、 启动服务: docker-compose up -d 2、 查看端口映射: docker-compose port web 80 # 查看web服务的80端口映射 3、 检查卷挂载: docker-compose exec web ls /usr/share/nginx/html
docker volume ls # 查看命名卷 4、 查看详细配置: docker-compose config # 验证配置文件语法

六、注意事项 1、 路径相关: • 使用相对路径时,基于 docker-compose.yml 文件所在目录 • 文件权限问题:容器内用户需有访问挂载目录的权限 2、 端口相关: • 避免使用 0.0.0.0 隐式绑定(默认绑定所有IP) • 生产环境建议指定协议类型:8080:80/tcp 3、 版本差异: • Compose 文件版本影响语法(推荐使用 3.x 版本) • 不同版本对网络模式的支持可能不同 4、 数据持久化: • 重要数据务必使用命名卷或明确路径 • 匿名卷在删除容器后可能被自动清理

通过本教程,你可以掌握 Docker Compose 中路径和端口映射的核心配置方法。实际应用时建议配合环境变量、网络配置等实现完整的服务编排。

收藏
送赞 4
分享

1

主题

16

回帖

0

牛值

江湖小虾

2025-2-26 22:56:27 显示全部楼层
支持一下
谢谢兄弟  详情 回复
2025-2-27 01:09

6

主题

46

回帖

115

牛值

社区共建团

社区上线纪念勋章社区共建团荣誉勋章

2025-2-27 01:09:46 楼主 显示全部楼层
谢谢兄弟

0

主题

1

回帖

0

牛值

江湖小虾

2025-2-27 07:52:36 显示全部楼层
详细,可惜不太会
这个就是了解为什么要映射,路径端口是什么  详情 回复
2025-2-27 11:36

6

主题

46

回帖

115

牛值

社区共建团

社区上线纪念勋章社区共建团荣誉勋章

2025-2-27 11:36:37 楼主 显示全部楼层
这个就是了解为什么要映射,路径端口是什么

17

主题

68

回帖

0

牛值

初出茅庐

2025-2-27 16:52:44 显示全部楼层
怎么给容器加密码?
使用Docker Compose:可以在docker-compose.yml文件中,为服务配置认证相关的参数。如为一个Web服务配置基本认证,在服务定义中添加environment: - BASIC_AUTH_USER=admin - BASIC_AUTH_PASSWORD=adminpassword,  详情 回复
2025-3-1 07:58

1

主题

16

回帖

0

牛值

fnOS系统内测组

2025-2-28 16:45:36 显示全部楼层
version 最新compose好像弃用了。
这个也就是,了解一下  详情 回复
2025-3-1 07:57

6

主题

46

回帖

115

牛值

社区共建团

社区上线纪念勋章社区共建团荣誉勋章

2025-3-1 07:57:02 楼主 显示全部楼层
这个也就是,了解一下

6

主题

46

回帖

115

牛值

社区共建团

社区上线纪念勋章社区共建团荣誉勋章

2025-3-1 07:58:27 楼主 显示全部楼层

<br /> <br />

使用Docker Compose:可以在docker-compose.yml文件中,为服务配置认证相关的参数。如为一个Web服务配置基本认证,在服务定义中添加

environment:
   - BASIC\_AUTH\_USER=admin
   - BASIC\_AUTH\_PASSWORD=adminpassword

这里设置了用户名admin和密码adminpassword

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则