我很乐意在Bitbucket Pipeline中为Ruby on Rails / PostgreSQL / Sidekiq项目设置连续部署,但我正在努力弄清楚如何将它们整合在一起,特别是如何让postgres在Docker镜像中工作。我对Docker和Pipeline非常陌生。
在我的Googling中,Docker谈到了使用docker-compose来创建包,所以我会有一个Postgres容器和一个Sideqik容器,然后将它们与app容器链接起来。但我不确定捆绑包和镜像之间的区别,也不确定Bitbucket Pipeline是否支持捆绑包。最终,我希望将部署部署到Heroku上的登台环境,但现在只需要让rspec spec
在管道中工作就可以了。
有没有已经设置了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"?
发布于 2016-12-22 09:34:39
根据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...
发布于 2017-01-08 12:50:48
Docker compose是Bitbucket Pipeline中的still not available,所以你必须使用一个已经安装了所有你需要的依赖项的Docker镜像。
我们也一直在努力寻找具有Django Postgres堆栈的好的Docker容器,并最终构建了自定义的Docker容器。我已经在一篇文章中描述了整个过程和步骤:Building, Testing and Deploying Django App with Bitbucket Pipelines。您可以将其用作项目的模板,并将Python依赖项替换为Ruby。
https://stackoverflow.com/questions/39064549
复制相似问题