add dockerfile for ror, fix template issue (#718)

This commit is contained in:
William Cheng 2018-08-02 22:07:09 +08:00 committed by GitHub
parent f0425d77ef
commit f32398a708
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 142 additions and 66 deletions

View File

@ -122,7 +122,7 @@ public class RubyOnRailsServerCodegen extends AbstractRubyCodegen {
additionalProperties.put("isDBSQLite", Boolean.TRUE);
}
supportingFiles.add(new SupportingFile("Gemfile", "", "Gemfile"));
supportingFiles.add(new SupportingFile("Gemfile.mustache", "", "Gemfile"));
supportingFiles.add(new SupportingFile("README.md", "", "README.md"));
supportingFiles.add(new SupportingFile("Rakefile", "", "Rakefile"));
supportingFiles.add(new SupportingFile("config.ru", "", "config.ru"));
@ -155,7 +155,7 @@ public class RubyOnRailsServerCodegen extends AbstractRubyCodegen {
supportingFiles.add(new SupportingFile("application.rb", configFolder, "application.rb"));
supportingFiles.add(new SupportingFile("boot.rb", configFolder, "boot.rb"));
supportingFiles.add(new SupportingFile("cable.yml", configFolder, "cable.yml"));
supportingFiles.add(new SupportingFile("database.yml", configFolder, "database.yml"));
supportingFiles.add(new SupportingFile("database.mustache", configFolder, "database.yml"));
supportingFiles.add(new SupportingFile("environment.rb", configFolder, "environment.rb"));
supportingFiles.add(new SupportingFile("puma.rb", configFolder, "puma.rb"));
supportingFiles.add(new SupportingFile("routes.mustache", configFolder, "routes.rb"));
@ -181,6 +181,8 @@ public class RubyOnRailsServerCodegen extends AbstractRubyCodegen {
supportingFiles.add(new SupportingFile(".keep", socketsFolder, ".keep"));
supportingFiles.add(new SupportingFile("restart.txt", tmpFolder, "restart.txt"));
supportingFiles.add(new SupportingFile(".keep", vendorFolder, ".keep"));
supportingFiles.add(new SupportingFile("Dockerfile", "", "Dockerfile"));
supportingFiles.add(new SupportingFile("docker-entrypoint.sh", "", "docker-entrypoint.sh"));
}
@Override

View File

@ -0,0 +1,29 @@
FROM ruby:2.5-alpine
ENV BUILD_PACKAGES="curl-dev ruby-dev build-base" \
DEV_PACKAGES="zlib-dev libxml2-dev libxslt-dev tzdata yaml-dev sqlite-dev" \
RUBY_PACKAGES="ruby-json yaml nodejs"
RUN apk update && \
apk upgrade && \
apk add --no-cache --update\
$BUILD_PACKAGES \
$DEV_PACKAGES \
$RUBY_PACKAGES && \
mkdir -p /usr/src/myapp
WORKDIR /usr/src/myapp
COPY Gemfile ./
RUN gem install bundler
RUN bundle config build.nokogiri --use-system-libraries && \
bundle install --jobs=4 --retry=10 --clean
COPY . ./
RUN chmod +x bin/rails
COPY docker-entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/docker-entrypoint.sh
ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["bin/rails", "s", "-b", "0.0.0.0"]

View File

@ -0,0 +1,9 @@
#!/bin/sh
set -e
if [ "$1" = 'bin/rails' ] && [ "$2" = 's' ]; then
rm -f /myapp/tmp/pids/server.pid
bin/rails db:migrate
fi
exec "$@"

View File

@ -0,0 +1,29 @@
FROM ruby:2.5-alpine
ENV BUILD_PACKAGES="curl-dev ruby-dev build-base" \
DEV_PACKAGES="zlib-dev libxml2-dev libxslt-dev tzdata yaml-dev sqlite-dev" \
RUBY_PACKAGES="ruby-json yaml nodejs"
RUN apk update && \
apk upgrade && \
apk add --no-cache --update\
$BUILD_PACKAGES \
$DEV_PACKAGES \
$RUBY_PACKAGES && \
mkdir -p /usr/src/myapp
WORKDIR /usr/src/myapp
COPY Gemfile ./
RUN gem install bundler
RUN bundle config build.nokogiri --use-system-libraries && \
bundle install --jobs=4 --retry=10 --clean
COPY . ./
RUN chmod +x bin/rails
COPY docker-entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/docker-entrypoint.sh
ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["bin/rails", "s", "-b", "0.0.0.0"]

View File

@ -3,14 +3,8 @@ source 'https://rubygems.org'
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '~> 5.0.0'
{{#isDBSQLite}}
# Use sqlite as the database for Active Record
gem 'sqlite3', '~> 1.3'
{{/isDBSQLite}}
{{#isDBMySQL}}
# Use mysql as the database for Active Record
gem 'mysql2', '>= 0.3.18', '< 0.5'
{{/isDBMySQL}}
# Use Puma as the app server
gem 'puma', '~> 3.0'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder

View File

@ -1,60 +1,3 @@
{{#isDBMySQL}}
# MySQL. Versions 5.0 and up are supported.
#
# Install the MySQL driver
# gem install mysql2
#
# Ensure the MySQL gem is defined in your Gemfile
# gem 'mysql2'
#
# And be sure to use new-style password hashing:
# http://dev.mysql.com/doc/refman/5.7/en/old-client.html
#
default: &default
adapter: mysql2
encoding: utf8
pool: 5
username: root
password:
socket: /tmp/mysql.sock
development:
<<: *default
database: api_demo_development
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
<<: *default
database: api_demo_test
# As with config/secrets.yml, you never want to store sensitive information,
# like your database password, in your source code. If your source code is
# ever seen by anyone, they now have access to your database.
#
# Instead, provide the password as a unix environment variable when you boot
# the app. Read http://guides.rubyonrails.org/configuring.html#configuring-a-database
# for a full rundown on how to provide these environment variables in a
# production deployment.
#
# On Heroku and other platform providers, you may have a full connection URL
# available as an environment variable. For example:
#
# DATABASE_URL="mysql2://myuser:mypass@localhost/somedatabase"
#
# You can use this database configuration with:
#
# production:
# url: <%= ENV['DATABASE_URL'] %>
#
production:
<<: *default
database: api_demo_production
username: api_demo
password: <%= ENV['API_DEMO_DATABASE_PASSWORD'] %>
{{/isDBMySQL}}
{{#isDBSQLite}}
# SQLite version 3.x
# gem install sqlite3-ruby (not necessary on OS X Leopard)
development:
@ -77,4 +20,3 @@ production:
database: db/production.sqlite3
pool: 5
timeout: 5000
{{/isDBSQLite}}

View File

@ -0,0 +1,9 @@
#!/bin/sh
set -e
if [ "$1" = 'bin/rails' ] && [ "$2" = 's' ]; then
rm -f /myapp/tmp/pids/server.pid
bin/rails db:migrate
fi
exec "$@"

View File

@ -0,0 +1,62 @@
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>org.opoenapitools</groupId>
<artifactId>RORPetstoreServerTests</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<name>ROR Petstore Server</name>
<build>
<plugins>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<id>bundle-install</id>
<phase>pre-integration-test</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>bundle</executable>
<arguments>
<argument>install</argument>
<argument>--path</argument>
<argument>vendor/bundle</argument>
</arguments>
</configuration>
</execution>
<!--<execution>
<id>bundle-test</id>
<phase>integration-test</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>bundle</executable>
<arguments>
<argument>exec</argument>
<argument>rspec</argument>
</arguments>
</configuration>
</execution>-->
</executions>
</plugin>
</plugins>
</build>
</project>