docker-compose rails with mysql

Jur*_*jka 3 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
Run Code Online (Sandbox Code Playgroud)

并在我的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
Run Code Online (Sandbox Code Playgroud)

结束当我运行应用程序时我得到错误: Access denied for user 'root'@'xxx' (using password: YES)其中xxx是ip我的机器不是容器.请帮助我不知道该怎么做

Mar*_*rcs 7

你必须链接容器,这应该工作:

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
Run Code Online (Sandbox Code Playgroud)

现在web容器已链接到容器db并且sql_srv是db容器的别名.您应该使用以下地址db从web容器到达容器:sql_srv:3306

如果您只想将容器连接ports到db容器,则实际上不需要在容器中指定容器.该属性仅用于从主机到达容器.dbwebports