docker用mysql编写rails

uyto3xhc  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(299)

你好,我有个大问题。我尝试在不同的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数据库中

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

在运行应用程序时结束,我遇到错误: Access denied for user 'root'@'' (using password: YES) 其中是我的机器而不是容器。请帮帮我,我不知道该怎么办

mzsu5hc0

mzsu5hc01#

您必须链接容器,这应该可以:

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 容器链接到 db 以及 sql_srv 是的别名 db 容器。你应该到达 db 集装箱从 web 使用此地址的容器: sql_srv:3306 您实际上不需要指定 portsdb 如果您只想连接 db 容器到 web 容器。属性 ports 仅用于从主机到达容器。

相关问题