gpt4 book ai didi

mysql - Docker + Mysql 连接错误 : Unknown MySQL server host 'db'

转载 作者:行者123 更新时间:2023-11-29 15:28:05 29 4
gpt4 key购买 nike

我在 Rails + MySQL Docker 设置中遇到了此错误:

Mysql2::Error::ConnectionError: Unknown MySQL server host 'db' (-2)
/usr/local/bundle/gems/mysql2-0.5.2/lib/mysql2/client.rb:90:in `connect'
/usr/local/bundle/gems/mysql2-0.5.2/lib/mysql2/client.rb:90:in `initialize'

我的docker-compose.yml:

version: '3.7'
services:
db:
# https://github.com/passbolt/passbolt_docker/issues/103
image: mysql:5.7
restart: always
healthcheck:
test: ["CMD-SHELL", 'mysql --database=$$MYSQL_DATABASE --password=$$MYSQL_ROOT_PASSWORD --execute="SELECT count(table_name) > 0 FROM information_schema.tables;" --skip-column-names -B']
interval: 30s
timeout: 10s
retries: 4
environment:
MYSQL_DATABASE: 'db'
MYSQL_USER: 'user'
MYSQL_PASSWORD: 'password'
MYSQL_ROOT_PASSWORD: 'password'
ports:
- "3305:3306"
expose:
- '3305'
volumes:
- my-db:/var/lib/mysql
web:
build: .
command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
volumes:
- '.:/app'
ports:
- '3000:3000'
environment:
DB_PORT: 3306
DB_HOST: db
DATABASE_URL: mysql2://user:password@db:3306
depends_on:
- db

volumes:
my-db:

和我的database.yml:

default: &default
adapter: mysql2
encoding: utf8mb4
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: user
password: password
host: localhost
url: <%= ENV['DATABASE_URL'] %>
port: 3305

根据this ,我应该等待MySQL启动吗?但是,我在 docker-compose 文件的 healthcheck 部分添加了运行状况检查,但它不起作用。

我也尝试使用netcat来检查端口,但它也不起作用。为什么我无法从 Docker web 容器连接到主机 db?我做错了什么?

最佳答案

事实证明,对于我的问题,我需要清除我的 docker 卷并重新创建所有内容。 MySQL was experiencing an error while booting up .

基本上运行了这个:

docker-compose down
docker system prune --force --volumes

然后重新启动一切,确保 MySQL(“db”)在尝试连接到 db 之前成功运行。

关于mysql - Docker + Mysql 连接错误 : Unknown MySQL server host 'db' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58929215/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com