6

Ruby on Rails / PostgreSQL / Sidekiq プロジェクト用に Bitbucket Pipelines で継続的デプロイをセットアップしたいのですが、どのようにすべてを適合させるか、具体的には Docker イメージ内で postgres を動作させる方法を理解するのに苦労しています. 私はDockerとパイプラインに非常に慣れていません。

私のグーグルでは、Docker は docker-compose を使用してバンドルを作成することについて話しているので、Postgres コンテナーと Sideqik コンテナーを用意し、それらをアプリ コンテナーにリンクします。しかし、バンドルとイメージの違いと、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"?
4

2 に答える 2

2

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...
于 2016-12-22T09:34:38.540 に答える
0

Docker Compose は Bitbucket Pipelines 内ではまだ利用できないため、必要なすべての依存関係が既にインストールされている単一の Docker イメージを使用する必要があります。

また、Django Postgres スタックで適切な Docker コンテナーを見つけるのに苦労し、最終的にカスタム Docker コンテナーを構築することになりました。全体のプロセスと手順については、次の投稿で説明しました: Build, Testing and Deploying Django App with Bitbucket Pipelines . これをプロジェクトのテンプレートとして使用し、Python の依存関係を Ruby に置き換えることができます。

于 2017-01-08T12:50:48.167 に答える