Tag: ruby on rails

最佳做法轨道docker – 撰写数据库:创build数据库:迁移

我有简单的rails应用程序与docker-compose.yml文件。 它由两个容器组成 – 包含PostgreSQL的db容器和带有rails应用的web容器。 在web部件的dockerfile中,我在CMD有这样的行 CMD RAILS_ENV=production rake db:create db:migrate && \ bundle exec rails s -p 3000 -b '0.0.0.0' –environment=production 所以排队rake数据库:创build数据库:迁移我创build数据库,如果它是第一次运行数据库容器,并运行迁移。 但如果它只是更新Web部分 – 我只需要运行db:migrate和db:create(因为它应该)给我错误 ERROR: database "myapp_production" already exists STATEMENT: CREATE DATABASE "myapp_production" ENCODING = 'unicode' 一切正常,但我认为有一个更好的办法。 什么是处理这种情况的最好方法?

在Docker中Postgresql DB没有连接

我的rails应用程序正在docker中运行。 我有我的服务器运行和监听主机'本地主机'和端口3000.但是当我点击浏览器' http:// localhost:3000 / '我得到下面的错误, PG :: ConnectionBad at / 无法连接到服务器:连接超时服务器是否在主机“db”(184.168.221.24)上运行并接受端口5432上的TCP / IP连接? 我无法知道这个“184.168.221.24”IP将在哪里。 谢谢。

Rails的数据库:迁移与容器中运行的Postgres

在我的开发环境我有postgres在一个容器中运行,运行db:migrate工作正常,直到最近我需要改变架构为SQL config.active_record.schema_format = :sql 不是当我运行db:migrate时出现以下错误: pg_dump: [archiver (db)] connection to database "mydatabase" failed: FATAL: password authentication failed for user "myuser" 在我看来,pg_dump忽略database.yml设置。 其他人有这种设置的运气?

Docker无法在rspectesting目录中看到更新的fixture CSV

这个很奇怪 我正在运行一个非常典型的Docker容器,它包含一个Rails API。 在这个API的内部,我有一个端点,它需要上传一个CSV文件,并执行一些操作。 这里是确切的stream程: vim spec/fixtuers/bid_update.csv # fill it with some data # now we call the spec that uses this fixture docker-compose run –rm web bundle exec rspec spec/requests/bids_spec.rb # and now the csv is loaded and I can see it as plaintext 但是,创build这个之后,我决定改变CSV的内容。 所以我这样做,每一块添加一个列和相应的值。 但是现在,当我们在保存之后再次运行我们的规范时,它具有旧版本的CSV。 规范中断点处最初使用的一个。 清除CSV显示它显然应该有新的内容。 重启虚拟机什么都不做。 我find的唯一的解决scheme是docker-machine rm dev和build立一个新的机器(我的主要一个被称为开发)。 我完全不知道是什么原因造成的,或者是一个简单的方法来解决这个问题(所有这些图像的构build需要一段时间)。 […]

docker-compose错误,当我运行包

当我运行一些像这样的任务时,我有一个关于我的gemfile或bundle的错误: docker exec -it webapp_web_1 bundle exec rake db:migrate 错误: 找不到Gemfile或.bundle /目录 或者这个命令: docker-compose logs worker log: Attaching to webapp_worker_1 worker_1 | Could not locate Gemfile or .bundle/ directory Dockerfile: # === 1 === FROM phusion/passenger-ruby22:0.9.18 MAINTAINER Israel Barba Aceves "israel@yotepresto.com" # Set correct environment variables. ENV HOME /root RUN apt-get update && apt-get install […]

日志不保存到docker环境中的文件

在我的生产环境production.rb 。 我已经configuration我的日志将被保存到文件: config.logger = Logger.new('log/production.log') 当我在本地运行(通过使用命令行rails s -e production启动服务器)。 一切正常。 但是当我在Docker环境下运行时,我看不到production.log 。 请帮我解决这个问题。

Bundler寻找旧版gem

我使用earnshark_sdk 0.2.0ruby在我的应用程序,现在我想使用最新版本0.2.1。 所以我试着做下面的事情 的Gemfile: gem 'earnshark_sdk', '~> 0.2.1' 我做了一个bundler update 由于该应用程序dockerized,我试图去容器内,并删除旧版本,并安装了新的。 gem list显示earnshark_sdk (0.2.1) 当我docker-compose up它给 我对ruby和docker工人都很陌生,任何build议都会受到欢迎。 谢谢!

Docker busybox立即退出

我正在尝试创build一个busybox docker镜像来保存我的rails应用程序的日志,包括nginx和unicorn日志。 为了创build该容器,我使用以下命令: docker run –name app-logs -v /logs busybox /bin/sh 但是,创build的容器会立即退出,并显示代码0: $ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 75e2f2efdc77 busybox "/bin/sh" 6 seconds ago Exited (0) 4 seconds ago app-logs 命令docker日志不给任何输出,我不能找出问题是什么。 提前致谢。

Docker MySQL:连接一个Rails应用程序到MySQL

我有一个在Docker中运行的Rails应用程序。 我想在一个单独的容器中运行MySQL并连接两个。 我docker-compose.yml文件如下所示: # docker-compose.yml db: image: "mysql:5.6" ports: – 3306 environment: MYSQL_ROOT_PASSWORD: pass MYSQL_DATABASE: dbname MYSQL_USER: user MYSQL_PASSWORD: pass web: build: . ports: – "80:80" env_file: – .env.development links: – db volumes: – "/webapp:/home/app/webapp" 当我运行docker-machine ip default我得到192.168.99.100 。 当我运行docker ps我看到mysql在PORT: 3306/tcp, 0.0.0.0:32782->32781/tcp : 3306/tcp, 0.0.0.0:32782->32781/tcp上运行编辑:删除mysql容器并重新启动它后,端口实际上是0.0.0.0:32784->3306/tcp 我正在使用Sequelgem,并使用以下参数连接到我的分贝: Sequel::Model.db = Sequel.connect(adapter: 'mysql2', database: 'dbname', user: 'user', […]

我可以使用Docker进行Rails应用程序的生产部署吗?

我想用Docker来部署我的Rails应用程序。 我想知道是否有人试过这个? 我可以面对什么问题?