You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置docker-compose.yaml实现直接通过IP访问ShinyApp

解决方案:配置Docker Compose实现IP直接访问ShinyApp

要实现输入主机IP即可直接访问ShinyApp(无需手动添加端口),只需将ShinyApp容器的80端口映射到主机的80端口——HTTP协议默认使用80端口,浏览器访问时会自动选用该端口,无需手动指定。

修改后的docker-compose.yaml

version: "3"
services:
  db:
    image: kartoza/postgis:14-3.2
    volumes: 
      - ./mypostgres-dump/dumpfile.sql:/docker-entrypoint-initdb.d/create_tables.sql
    environment:
      - POSTGRES_DB=XXX
      - POSTGRES_USER=XXXX
      - POSTGRES_PASSWORD=XXXX
      - POSTGRES_MULTIPLE_EXTENSIONS=postgis, postgis_raster
    ports:
      - "5432:5432"
    restart: always
    networks:
      - skynet
  shiny:
    build: ./webapp
    restart: always
    container_name: shiny
    depends_on:
      - "db"
    ports:
      - "80:80"  # 映射主机80端口到容器内的ShinyApp端口
    networks:
      - skynet
networks:
  skynet:

关键修改说明

  • 替换原shiny服务中的expose: - "80"为ports: - "80:80":expose仅用于容器内部网络的端口暴露,不会将端口映射到主机;而ports会建立主机端口与容器端口的转发关系,让外部可以通过主机IP访问容器服务。
  • 你的Dockerfile已经正确配置ShinyApp监听容器内的80端口(options('shiny.port'=80,shiny.host='0.0.0.0')),无需额外调整镜像配置。
  • 注意:如果主机的80端口已被其他服务占用,需要先停止占用该端口的服务,否则端口映射会失败。

内容的提问来源于stack exchange,提问作者Marco Fiorentini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 02:55:28