使用docker进行数据库的rake操作

时间:2018-01-23 21:09:45

标签: ruby-on-rails docker rake

使用以下文件,我可以成功启动rails应用程序 除了使用数据库的rake操作。我跑的时候 docker exec -it www_web_1 bundle exec rake db:migrate 我看到它试图连接到localhost(web)并失败 而不是conntecing到数据库主机(db)

任何想法如何解决?

Dockerfile

FROM ruby:2.4.2
RUN mkdir -p /var/www/project
WORKDIR /var/www/project
COPY Gemfile /var/www/project/Gemfile
RUN bundle install
COPY entrypoint.sh /usr/local/bin
COPY . /var/www/project
CMD ["entrypoint.sh"]

entrypoint.sh

#!/usr/bin/env sh
bundle exec rake db:migrate
bundle exec rails s -p 3000 -b '0.0.0.0'

docker-compose.yml文件

version: '2'
services:
  db:
    image: mysql
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: project
  web:    
    depends_on:
      - db
    environment:
      - PROJECT_DB_NAME=project
      - PROJECT_DB_USER=root
      - PROJECT_DB_PSWD=root
      - PROJECT_DB_HOST=db    
      - RACK_ENV=production
      - RAILS_ENV=production
volumes:
    mysql:
    web:

配置/ database.yml的

default: &default
  adapter: mysql2
  pool: 5
  timeout: 5000
  database: <%= ENV["PROJECT_DB_NAME"] %>
  encoding: utf8
  username: <%= ENV["PROJECT_DB_USER"] %>
  password: <%= ENV["PROJECT_DB_PSWD"] %>
  host: <%= ENV["PROJECT_DB_HOST"] %>

development:
  <<: *default

production:
  <<: *default

1 个答案:

答案 0 :(得分:0)

你有撰写文件。 你必须运行撰写命令

$ docker-compose up --build                # run and build
$ docker-compose run web rake db:create    # database create
$ docker-compose run web rake db:migrate   # migreate

如果你想更多了解docker-compose 访问https://github.com/x1wins/paper-flower/wiki/2.-Docker--compose-(Development-mode,-Standalone)