CircleCI × Rails 응용 프로그램에서 docker-compose 가져오기
11103 단어 CircleCIdocker-composeDockerRails
CircleCI
및 docker-compose
를 가져왔습니다.다음 기록도 함께 남긴다.
circleci/config.yml
version: 2
jobs:
build:
docker:
- image: circleci/ruby:2.6.8-node-browsers
environment:
- BUNDLER_VERSION: 2.2.33
- RAILS_ENV: test
- POSTGRES_USER: <%= ENV['POSTGRES_USER'] %>
- image: circleci/postgres
environment:
- POSTGRES_USER: <%= ENV['POSTGRES_USER'] %>
- POSTGRES_PASSWORD: <%= ENV['POSTGRES_PASSWORD'] %>
- POSTGRES_DB: port_test
environment:
- PGHOST: 127.0.0.1
working_directory: ~/port
steps:
- checkout
- restore_cache:
keys:
- v1-dependencies-{{ checksum "Gemfile.lock" }}
- v1-dependencies-
- run:
name: install dependencies
command: |
gem install bundler -v 2.2.33
bundle install --jobs=4 --retry=3 --path vendor/bundle
- save_cache:
key: v1-dependencies-{{ checksum "Gemfile.lock" }}
paths:
- ./vendor/bundle
- run:
name: Wait DB start-up
command: dockerize -wait tcp://127.0.0.1:5432 -timeout 120s
- run:
name: Setup database
command: |
sudo ln -s /usr/lib/x86_64-linux-gnu/libffi.so.7.1.0 /usr/lib/x86_64-linux-gnu/libffi.so.6
bundle exec rails db:create
bundle exec rails db:migrate
bundle exec rails webpacker:install
- run:
name: Run rspec
command: bundle exec rspec
- run:
name: Run rubocop
command: bundle exec rubocop
DockerfileFROM ruby:2.6.8
RUN apt-get update -qq && apt-get install -y nodejs postgresql-client
WORKDIR /port
COPY Gemfile /port/Gemfile
COPY Gemfile.lock /port/Gemfile.lock
RUN gem install -v 2.2.33 bundler
RUN bundle install
RUN gem install -v 6.1.4.1 rails
COPY . /port
# コンテナー起動時に毎回実行されるスクリプトを追加
COPY entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"]
EXPOSE 3000
# イメージ実行時に起動させる主プロセスを設定
CMD ["rails", "server", "-b", "0.0.0.0"]
docker-compose.ymlversion: "3"
services:
db:
image: postgres
volumes:
- ./tmp/db:/var/lib/postgresql/data
environment:
POSTGRES_USER: <%= ENV['POSTGRES_USER'] %>
POSTGRES_PASSWORD: <%= ENV['POSTGRES_PASSWORD'] %>
ports:
- '5432:5432'
web:
build: .
command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
volumes:
- .:/port
ports:
- "3000:3000"
environment:
DATABASE_PORT: 5432
DATABASE_USER: <%= ENV['POSTGRES_USER'] %>
DATABASE_PASSWORD: <%= ENV['POSTGRES_PASSWORD'] %>
depends_on:
- db
database.ymldefault: &default
adapter: postgresql
encoding: unicode
pool: 5
host: db
timeout: 5000
username: <%= ENV['POSTGRES_USER'] %>
password: <%= ENV['POSTGRES_PASSWORD'] %>
development:
<<: *default
database: port_development
test:
<<: *default
database: port_test
host: <%= ENV['PGHOST'] || 'db' %>
production:
<<: *default
database: port_production
착오를 당하다1. Please upgrade Node.js 및 오류 표시
Webpacker에 필요한 노드입니다.js버전은 10.17.0 이상이고 이에 대응하는 것은 당시의 Node이다.js의 버전은 10.16.3입니다.
→루비의 버전을
2.6.3
에서 2.6.8
로 올리면 해결된다.gm의 의존관계도 있기 때문에 잘 안 하는 게 좋을 것 같고 이번에는 상승폭이 작아서 이 방법으로 해결했습니다.
2. 로컬 및 CircleaCI 데이터베이스의 호스트 이름이 다름
RSpec과 Rubbocop 등의 테스트를 수행할 때 로컬에서 연결해야 하는 호스트 이름
db
, CircleaCI에서 각각 연결해야 하는 호스트 이름localhost
이 필요합니다.그래서database.yml(부분 발췌문)
test:
<<: *default
database: port_test
host: <%= ENV['PGHOST'] || 'db' %>
circleci/config.yml(부분 발췌문)environment:
- PGHOST: 127.0.0.1
따라서 PGHOST
가 있으면 참조하시고 없으시면 연결db
하십시오.참고 자료
CircleaCI를 로컬에서 사용하려면
혹시 Push 디버깅은 없죠?자주 사용하는 Circleci 디버그 방법
[CircleaCI] Rails 응용 프로그램 가져오기(파일 설정 정보)
[Rails] Giithub과CircleaCI가 연합하여commiit에서 rspec와rubocop을 시작합니다
Rails+CircleaCI에서 Rspec을 실행하면 DB 오류가 발생합니다.
docker 및 circleaci를 사용하여 Rspec 테스트와 Please upgrade Node를 수행합니다.js 및 오류 표시
Reference
이 문제에 관하여(CircleCI × Rails 응용 프로그램에서 docker-compose 가져오기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/i-f/items/0859ac0a1cbc55321d8b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)