如何使用docker compose连接到数据库,docker compose连接到本地机器上的另一个服务(redash、mysql和python_脚本)
我有一个数据库,它连接到python脚本抛出网络连接。此脚本将更改MySQL中的数据。我想用redash来可视化这些数据。 Docker编写文件,用mysql\u db初始化redash。 但当我尝试在mysql服务中添加网络时,redash没有看到mysql数据库。我不明白为什么。 docker编写代码如下:如何使用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
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
#而且没有网络:任何服务中都有块
谢谢,这对我很有帮助。我以前不知道默认网络)谢谢,它帮助了我。我以前不知道关于默认网络的事