Ben*_*rey 6 postgresql ruby-on-rails docker docker-compose bitbucket-pipelines
我喜欢在Bitbucket Pipelines中为Ruby on Rails/PostgreSQL/Sidekiq项目设置持续部署,但是我很难理解它是如何组合在一起的,特别是如何在Docker镜像中使用postgres .我是Docker和Pipelines的新手.
在我的谷歌搜索中,Docker谈到使用docker-compose创建一个包,所以我有一个Postgres容器和一个Sideqik容器,然后将它们与app容器链接.但我不确定捆绑包和图像之间的区别是什么,以及Bitbucket Pipelines是否支持捆绑包.最终我想在Heroku上设置部署到临时环境,但是现在只rspec spec需要在Pipelines中工作就可以了.
是否存在已经设置了Ruby + PostgreSQL的现有公共映像,我可以使用它?如果没有,我从哪里开始?我当前的Dockerfile如下所示:
FROM postgres:9.4
FROM ruby:2.3.1-onbuild
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs postgresql-client
Run Code Online (Sandbox Code Playgroud)
然后我运行docker build .并docker run -it my-image /bin/bash执行以下命令:
root@a84ad0e7c16b:/usr/src/app# postgres
bash: postgres: command not found
root@a84ad0e7c16b:/usr/src/app# psql
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
Run Code Online (Sandbox Code Playgroud)
根据https://bitbucket.org/spittet/ruby-postgresql的建议,您可以轻松地进行bitbucket-pipelines.yml如下设置:
image: spittet/ruby-postgresql
pipelines:
default:
- step:
script:
- bundle install
- /etc/init.d/postgresql start
- sudo -u postgres sh -c 'createuser root --createdb'
- rails db:setup RAILS_ENV=test
- rspec
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我需要创建一个具有创建数据库权限的用户。
对于调试,您可以先在本地尝试:
run -i -t -v <local_directory_of_your_rails_app>:<directory_on_docker> spittet/ruby-postgresql /bin/bash
cd <directory_on_docker>
bundle install...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
759 次 |
| 最近记录: |