5

Chciałbym rozpocząć ciągłe wdrażanie w Pipeline Bitbucket dla projektu Ruby on Rails/PostgreSQL/Sidekiq, ale staram się opanować jak to wszystko pasuje do siebie, a konkretnie jak sprawić, by postgres działał w obrazie Docker. Jestem bardzo nowy w Docker i Pipelines.Konfigurowanie dysku CD dla projektu Ruby on Rails z Bitbucket Pipelines and Docker

W moim Googlingu Docker mówi o użyciu funkcji dokowania, aby utworzyć pakiet, więc powinienem mieć pojemnik PostgreSQL i kontener Sideqik, a następnie połączyć je z kontenerem aplikacji. Ale nie jestem pewien, jaka jest różnica między pakietem a obrazem, a jeśli Pipeline Bitbucket obsługuje pakiety. Ostatecznie chcę skonfigurować wdrożenia do środowiska pomostowego na Heroku, ale na razie po prostu uzyskanie rspec spec do pracy w Pipelines byłoby miłe.

Czy istnieje już publiczny obraz z już skonfigurowanymi Ruby + PostgreSQL, z których mogę korzystać? Jeśli nie, to gdzie mam zacząć? Mój obecny Dockerfile wygląda następująco:

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 

I następnie uruchomić docker build . i docker run -it my-image /bin/bash i następujące polecenia:

[email protected]:/usr/src/app# postgres 
bash: postgres: command not found 
[email protected]:/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"? 
+0

W jednym pliku Dockerfile nie powinieneś mieć poleceń 2 FROM. Punkt dokowania jest taki, że każdy kontener jest wyspecjalizowany i uruchamia jedno (prawie) polecenie. Będziesz mieć kontener dla Ruby i jeden dla PostgreSQL, ewentualnie jeden dla redis, jeśli zamierzasz używać go jako backend sidekiq. Docker-compose to narzędzie, które pozwala organizować różne pojemniki. Zacznij przeglądać: https://docs.docker.com/compose/rails/ – TopperH

Odpowiedz

2

Biorąc porady od https://bitbucket.org/spittet/ruby-postgresql można łatwo skonfigurować swoją bitbucket-pipelines.yml tak:

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 

Jak widać, musiałem utworzyć użytkownika z uprawnieniami do tworzenia baz danych.

Do debugowania można spróbować lokalnie pierwszy:

run -i -t -v <local_directory_of_your_rails_app>:<directory_on_docker> spittet/ruby-postgresql /bin/bash 
cd <directory_on_docker> 
bundle install... 
0

Docker komponować jest still not available wewnątrz Bitbucket rurociągi, więc będziesz musiał użyć pojedynczego Docker obraz, który ma wszystkie zależności czego potrzebujesz już zainstalowane.

Zmagaliśmy się również ze znalezieniem dobrego kontenera Docker ze stosem Django Postgreza i skończyliśmy budować niestandardowy kontener Docker. Opisałem cały proces i kroki w poście: Building, Testing and Deploying Django App with Bitbucket Pipelines. Możesz użyć go jako szablonu dla swojego projektu i zastąpić zależności Pythona Ruby.