向Docker容器(Apache超集)公开主机服务(Postgres、Redis)

sy5wg1nm  于 2023-02-15  发布在  Docker
关注(0)|答案(1)|浏览(130)

我正在尝试设置Apache Superset
我想从Docker中运行的超集示例访问主机上运行的Postgres和Redis服务。
(我不想为db和redis运行dockers,因为我已经在应用程序中安装了这些服务)。
我在超集文档中看到以下内容:

  • 注意:用户经常希望从超集连接到其他数据库。目前,最简单的方法是修改docker-compose-non-dev.yml文件,并将您的数据库添加为其他服务所依赖的服务(通过x-superset-depends-on)。*

在这里我对如何配置yaml文件一无所知。我对docker还是个新手。有人能指导我吗?这里是docker-compose-non-dev.yml的yaml文件服务部分。

redis:
    image: redis:7
    container_name: superset_cache
    restart: unless-stopped
    volumes:
      - redis:/data

  db:
    env_file: docker/.env-non-dev
    image: postgres:14
    container_name: superset_db
    restart: unless-stopped
    volumes:
      - db_home:/var/lib/postgresql/data```
xwbd5t1u

xwbd5t1u1#

如果我没理解错的话你要做两件事:
1.对这些组件使用现有服务
只需确保它们可以从你的超集docker容器访问,然后在superset_config.pysuperset_config_docker.py中指定这些资源的路径,这可能是你设置其他配置选项的地方。例如,要指向你的Postgres服务作为后端数据库,请指定:

SQLALCHEMY_DATABASE_URI='postgresql://username:password@path/dbname'

其中path是Postgres示例的URL或IP地址。对于Redis,这不是很清楚,但我认为你可以在配置文件中使用REDIS_HOST=设置该位置。你可以使用.env文件来存储这些字符串,而不是直接将它们放在配置文件中。
1.不运行不必要的容器
您应该能够删除您的帖子中的容器规范,并将它们从docker-compose文件顶部的x-superset-depends-on: &superset-depends-on列表中删除。

相关问题