首页 文章

使用Bitbucket Pipelines和Docker为Ruby on Rails项目设置CD

提问于
浏览
6

我喜欢在Bitbucket Pipelines中为Ruby on Rails / PostgreSQL / Sidekiq项目设置持续部署,但是我很难理解它是如何组合在一起的,特别是如何在Docker镜像中使用postgres . 我是Docker和Pipelines的新手 .

在我的谷歌搜索中,Docker谈到使用docker-compose创建一个包,所以我不确定包和图像之间有什么区别,如果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

然后我运行 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"?

2 回答

  • 2

    Docker compose在Bitbucket Pipelines中是still not available,所以你必须使用一个Docker镜像,它具有你已经安装的所有依赖项 .

    我们've also struggled with finding good Docker container with Django Postgres stack and ended up building custom Docker container. I'已经描述了帖子中的整个过程和步骤:Building, Testing and Deploying Django App with Bitbucket Pipelines . 您可以将它用作项目的模板,并用Ruby替换Python依赖项 .

  • 0

    根据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 -i -t -v <local_directory_of_your_rails_app>:<directory_on_docker> spittet/ruby-postgresql /bin/bash
    cd <directory_on_docker>
    bundle install...
    

相关问题