#!/usr/bin/env bash rails_version="${RAILS_VERSION:-6}" ruby_version="${RUBY_VERSION:-2.6}" docker run --rm -v `pwd`:/usr/src/app ruby:$ruby_version sh -c "gem install rails --version $rails_version && rails new /usr/src/app --database mysql ${RAILS_OPTIONS} --git --force --version $rails_version" touch yarn.lock cat << __EOT__ > Dockerfile FROM ruby:$ruby_version ENV LANG C.UTF-8 RUN apt-get update && curl -sL https://deb.nodesource.com/setup_10.x | bash && \\ apt-get install -y nodejs mariadb-client --no-install-recommends && \\ curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \ echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \ apt-get update && apt-get install yarn && \ rm -rf /var/lib/apt/lists/* WORKDIR /usr/src/app COPY Gemfile Gemfile.lock /usr/src/app/ RUN bundle install COPY package.json yarn.lock /usr/src/app/ RUN yarn install COPY . /usr/src/app EXPOSE 3000 CMD ["./bin/rails", "server", "-b", "0.0.0.0"] __EOT__ cat << __EOT__ > docker-compose.yml rails: build: . command: [ "bash", "-c", "rm -f tmp/pids/server.pid; ./bin/rails server -b 0.0.0.0" ] mem_limit: 384m environment: DISABLE_SPRING: "1" ports: - "3000:3000" volumes: - ".:/usr/src/app" - "/usr/src/app/node_modules" links: - "mysql" mysql: image: mysql:5.6 environment: MYSQL_ROOT_PASSWORD: "passwd" __EOT__ sed -i "" -e 's/password:$/password: "passwd"/;s/localhost/mysql/' config/database.yml sed -i "" -e "s|^end| config.web_console.whitelisted_ips = %w( 0.0.0.0/0 ::/0 )"\\$'\n'"end|" config/environments/development.rb touch Gemfile.lock echo ">>>> Build docker image" docker-compose build echo ">>>> Webpacker" docker-compose run --no-deps rails rails webpacker:install echo ">>>> Rebuild" docker-compose down docker-compose build echo ">>>> Create DBs" docker-compose run --rm rails rails db:create