如何使用docker compose连接到数据库,docker compose连接到本地机器上的另一个服务(redash、mysql和python_脚本)

如何使用docker compose连接到数据库,docker compose连接到本地机器上的另一个服务(redash、mysql和python_脚本),docker,docker-compose,docker-networking,Docker,Docker Compose,Docker Networking,我有一个数据库,它连接到python脚本抛出网络连接。此脚本将更改MySQL中的数据。我想用redash来可视化这些数据。 Docker编写文件,用mysql\u db初始化redash。 但当我尝试在mysql服务中添加网络时,redash没有看到mysql数据库。我不明白为什么。 docker编写代码如下: version: '2' x-redash-service: &redash-service image: redash/redash:8.0.0.b32245 dep

我有一个数据库,它连接到python脚本抛出网络连接。此脚本将更改MySQL中的数据。我想用redash来可视化这些数据。 Docker编写文件,用mysql\u db初始化redash。 但当我尝试在mysql服务中添加网络时,redash没有看到mysql数据库。我不明白为什么。 docker编写代码如下:

 version: '2'
x-redash-service: &redash-service
  image: redash/redash:8.0.0.b32245
  depends_on:
    - postgres
    - redis
  env_file: redash.env
  restart: always

services:
  server:
    <<: *redash-service
    command: server
    ports:
      - "5000:5000"
    environment:
      REDASH_WEB_WORKERS: 4

  scheduler:
    <<: *redash-service
    command: scheduler
    environment:
      QUEUES: "celery"
      WORKERS_COUNT: 1

  scheduled_worker:
    <<: *redash-service
    command: worker
    environment:
      QUEUES: "scheduled_queries,schemas"
      WORKERS_COUNT: 1

  adhoc_worker:
    <<: *redash-service
    command: worker
    environment:
      QUEUES: "queries"
      WORKERS_COUNT: 2

  redis:
    image: redis:5.0-alpine
    restart: always
  postgres:
    image: postgres:9.5-alpine
    env_file: redash.env
    restart: always
  nginx:
    image: redash/nginx:latest
    ports:
      - "80:80"
    depends_on:
      - server
    links:
      - server:redash
    restart: always

  mysql:
 #   container_name: mysql_db
    image: mysql:5.7
    stdin_open: true # docker run -i
    tty: true        # docker run -t
    volumes:
      - /Users/zzema/Documents/Docker/selenium-template/mysql:/var/lib/mysql
      - /Users/zzema/Documents/Docker/selenium-template/sql_config_path:/etc/mysql/conf.d
    restart: always
    ports:
      - "3306:3306"
    environment:
      - MYSQL_ROOT_PASSWORD=secret
      - MYSQL_DATABASE=todos
      - MYSQL_USER=devuser
      - MYSQL_PASSWORD=secret

# With this uncomment lines I can't connect to my_sql from redash
#    networks:
#      avito_connect:
#        aliases:
#          - mysql
#networks:
#  avito_connect:
#    external: true
版本:“2”
x-redash-service:&redash服务
图片:redash/redash:8.0.0.b32245
取决于:
-博士后
-雷迪斯
环境文件:redash.env
重新启动:始终
服务:
服务器:

要使一个容器到达另一个容器,它们必须位于同一Docker网络上

中介绍了您可以使用的整个网络环境。如果不执行任何操作,Compose将为您创建一个名为
default
的网络,容器将附加到该网络。如果您为服务声明
网络:
,则将替换
默认网络,除非您明确声明它

如果取消对这些行的注释,实际上会得到:

网络:
默认值:{}#由Compose创建
avito_connect:{…}#手动创建
服务:
服务器:
网络:
默认值:{}#自动插入
mysql:
网络:#没有“默认值”,因为存在显式设置
avito_连接:{…}
现在这两个服务不在同一个网络上,无法相互连接

有几种方法可以解决这个问题。一种是将数据库连接到两个网络:

服务:
mysql:
网络:
违约:
avito_connect:
另一种方法是将“默认”网络设置为您尝试连接的外部网络:

version:'2.4'#最小值为2.1,必须大于2(.0)
网络:
违约:
外部:正确
名称:avito_connect
#而且没有网络:任何服务中都有块

要让一个容器到达另一个容器,它们必须位于同一个Docker网络上

中介绍了您可以使用的整个网络环境。如果不执行任何操作,Compose将为您创建一个名为
default
的网络,容器将附加到该网络。如果您为服务声明
网络:
,则将替换
默认网络,除非您明确声明它

如果取消对这些行的注释,实际上会得到:

网络:
默认值:{}#由Compose创建
avito_connect:{…}#手动创建
服务:
服务器:
网络:
默认值:{}#自动插入
mysql:
网络:#没有“默认值”,因为存在显式设置
avito_连接:{…}
现在这两个服务不在同一个网络上,无法相互连接

有几种方法可以解决这个问题。一种是将数据库连接到两个网络:

服务:
mysql:
网络:
违约:
avito_connect:
另一种方法是将“默认”网络设置为您尝试连接的外部网络:

version:'2.4'#最小值为2.1,必须大于2(.0)
网络:
违约:
外部:正确
名称:avito_connect
#而且没有网络:任何服务中都有块

谢谢,这对我很有帮助。我以前不知道默认网络)谢谢,它帮助了我。我以前不知道关于默认网络的事