mysql - docker-compose rails 与 mysql

标签 mysql ruby-on-rails docker docker-compose

你好,我有一个大问题。 我正在尝试在单独的 docker 容器上运行 rails 和 mysql。 在 docker-compose.yml 我有:

version: '2'
services:
  db:
    image: mysql
    ports:
      - "3307:3306"
    environment:
      MYSQL_ROOT_PASSWORD: zzz
      MYSQL_USER: root
      MYSQL_PASSWORD: zzz
      MYSQL_DATABASE: zzz
  web:
    build: .
    command: bundle exec rails s -p 3000
    volumes:
      - .:/app
    ports:
      - "3000:3000"
    depends_on:
      - db

在我的 rails database.yml 中

development:
  adapter: mysql2
  encoding: utf8
  database: zzz
  pool: 5
  username: root
  password: zzz
  host: database.dev //this is host for container with mysql
  port: 3306

结束时,当我运行应用程序时出现错误: 用户 'root'@'xxx' 的访问被拒绝(使用密码:YES) 其中 xxx 是 ip 我的机器而不是容器。请帮助我不知道该怎么做

最佳答案

你必须 link容器,这应该有效:

version: '2'
services:
  db:
    image: mysql
    ports:
      - "3307:3306"
    environment:
      MYSQL_ROOT_PASSWORD: zzz
      MYSQL_USER: root
      MYSQL_PASSWORD: zzz
      MYSQL_DATABASE: zzz
  web:
    build: .
    command: bundle exec rails s -p 3000
    volumes:
      - .:/app
    ports:
      - "3000:3000"
    links:
     - db:sql_srv
    depends_on:
      - db

现在 web容器链接到 dbsql_srvdb 的别名容器。你应该到达 db来自 web 的容器使用此地址的容器:sql_srv:3306

您实际上不需要指定 portsdb容器,如果你只想连接你的 db容器到 web容器。属性 ports仅用于从主机到达容器。

关于mysql - docker-compose rails 与 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39907266/

相关文章:

ruby-on-rails - 使用命名空间模型更新失败

docker - 限制 docker 容器内启动的进程数量

php - 重新启动失败的Selenium浏览器

php - 选择/使用该行条目后,标记表条目不再显示

php - 为什么会 print_r ($row);只返回数字 1?

PHP MYSQL 超链接和表单字段

ruby-on-rails - 从 sqlite 转换为 postgresql

php - Codeigniter - 只能在 autoload.php 中加载模型

javascript - 如何使用 JQuery 将样式应用于正确的标签

python - 如何使用 Docker 清除 Django 的缓存?