You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							72 lines
						
					
					
						
							2.2 KiB
						
					
					
				
			
		
		
	
	
							72 lines
						
					
					
						
							2.2 KiB
						
					
					
				| FROM ruby:3.1.4-alpine3.18 as base | |
|  | |
| WORKDIR /app | |
|  | |
| # Add the timezone as it's not configured by default in Alpine | |
| RUN apk add --update --no-cache tzdata && \ | |
|     cp /usr/share/zoneinfo/Europe/London /etc/localtime && \ | |
|     echo "Europe/London" > /etc/timezone | |
|  | |
| # build-base: compilation tools for bundle | |
| # yarn: node package manager | |
| # postgresql-dev: postgres driver and libraries | |
| RUN apk add --no-cache build-base=0.5-r3 nodejs-current=20.8.1-r0 yarn=1.22.19-r0 postgresql13-dev=13.13-r0 git=2.40.1-r0 bash=5.2.15-r5 | |
|  | |
| # Bundler version should be the same version as what the Gemfile.lock was bundled with | |
| RUN gem install bundler:2.3.14 --no-document | |
|  | |
| COPY .ruby-version Gemfile Gemfile.lock /app/ | |
| RUN bundle config set without "development test" | |
| RUN bundle install --jobs=4 --no-binstubs --no-cache | |
|  | |
| COPY package.json yarn.lock /app/ | |
| RUN yarn install --frozen-lockfile | |
|  | |
| COPY . /app/ | |
|  | |
| RUN bundle exec rake assets:precompile | |
|  | |
| ENV PORT=8080 | |
| EXPOSE ${PORT} | |
|  | |
| RUN adduser --system --no-create-home nonroot | |
|  | |
| FROM base as test | |
|  | |
| RUN bundle config set without "" | |
| RUN bundle install --jobs=4 --no-binstubs --no-cache | |
|  | |
| # Install gecko driver for Capybara tests | |
| RUN apk add firefox | |
| RUN wget https://github.com/mozilla/geckodriver/releases/download/v0.31.0/geckodriver-v0.31.0-linux64.tar.gz \ | |
|     && tar -xvzf geckodriver-v0.31.0-linux64.tar.gz \ | |
|     && rm geckodriver-v0.31.0-linux64.tar.gz \ | |
|     && chmod +x geckodriver \ | |
|     && mv geckodriver /usr/local/bin/ | |
|  | |
| CMD bundle exec rake parallel:setup && bundle exec rake parallel:spec | |
|  | |
| FROM base as development | |
|  | |
| # We expect the rake assets:precompile command to create these directories, but mkdir -p will create them if they don't already exist | |
| RUN mkdir -p tmp log | |
| RUN chown -R nonroot tmp log | |
| RUN chown nonroot db/schema.rb | |
|  | |
| RUN bundle config set without "test" | |
| RUN bundle install --jobs=4 --no-binstubs --no-cache | |
|  | |
| USER nonroot | |
|  | |
| CMD bundle exec rails s -e ${RAILS_ENV} -p ${PORT} --binding=0.0.0.0 | |
|  | |
| FROM base as production | |
|  | |
| # We expect the rake assets:precompile command to create these directories, but mkdir -p will create them if they don't already exist | |
| RUN mkdir -p tmp log | |
| RUN chown -R nonroot tmp log | |
| RUN chown nonroot db/schema.rb | |
|  | |
| USER nonroot | |
|  | |
| CMD bundle exec rails s -e ${RAILS_ENV} -p ${PORT} --binding=0.0.0.0
 | |
| 
 |