Докеризация Rails: есть какие-либо советы?

#ruby-on-rails #docker #webpacker

#ruby-on-rails #докер #webpacker

Вопрос:

Я последовал https://medium.com/soulmates-ai/running-a-rails-app-with-webpacker-and-docker-8d29153d3446 адаптировать мой проект Rails к Docker, используя Webpacker и Rails как отдельные сервисы.

Как новичок, я был бы очень рад любому, кто мог бы уделить мне некоторое время для просмотра этих строк и сказать мне, правильно ли я это делаю 🙂

Dockerfile

 FROM ruby:2.5.5-slim

ARG PRECOMPILEASSETS
ARG RAILS_ENV

ENV RAILS_ENV ${RAILS_ENV}

RUN apt-get update amp;amp; apt-get install -y curl gnupg
RUN echo "deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main" > /etc/apt/sources.list.d/pgdg.list
RUN curl -q https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -

RUN apt-get -y update amp;amp; 
      apt-get install --fix-missing --no-install-recommends -qq -y 
        build-essential 
        vim 
        wget gnupg 
        git-all 
        curl 
        ssh 
        postgresql-client-10 libpq5 libpq-dev -y amp;amp; 
      wget -qO- https://deb.nodesource.com/setup_9.x  | bash - amp;amp; 
      apt-get install -y nodejs amp;amp; 
      wget -qO- https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - amp;amp; 
      echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list amp;amp; 
      apt-get update amp;amp; 
      apt-get install yarn amp;amp; 
      apt-get clean amp;amp; 
      rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

RUN gem install bundler
#Install gems
RUN mkdir /gems
WORKDIR /gems
COPY Gemfile .
COPY Gemfile.lock .
RUN bundle install


ARG INSTALL_PATH=/opt/beweeg
ENV INSTALL_PATH $INSTALL_PATH
WORKDIR $INSTALL_PATH
COPY . .

# Precompile assets (or not)
RUN docker/potential_asset_precompile.sh $PRECOMPILEASSETS
  

docker-compose.yml

 version: '3.0'
services:
  db:
    image: postgres:11-alpine
    ports:
      - 5433:5432
    environment:
      POSTGRES_PASSWORD: postgres

  webpacker:
    image: ${DOCKER_IMAGE_NAME-beweeg}
    command: ["./docker/start_webpack_dev.sh"]
    volumes:
      - .:/opt/beweeg:cached
    ports:
      - 3035:3035

  app:
    image: ${DOCKER_IMAGE_NAME-beweeg}
    build:
      context: .
      args:
        - PRECOMPILEASSETS=NO
        - RAILS_ENV=development
    environment:
      - RAILS_ENV=development
      - APP_HOST=localhost:3000
      - SMTP_USERNAME
      - SMTP_PWD
      - SMTP_DOMAIN
      - SMTP_ADDRESS
      - SMTP_PORT
      - SMTP_AUTHENTICATION
      - SMTP_ENABLE_STARTTLS_AUTO
    links:
      - db
      - webpacker
    ports:
      - 3000:3000
    command: ["./docker/wait_for_it.sh", "db:5432", "--", "./docker/start_rails.sh"]
    volumes:
      - .:/opt/beweeg:cached
  

.dockerignore

 .git
.gitignore
*.md
.dockerignore
.gitlab-ci.yml
docker-compose.*
Dockerfile
log/*
node_modules/*
public/assets/*
storage/*
public/js/*
public/js-test/*
tmp/*
  

Остальное должно быть таким же, как в соответствующей статье от Soulmates … Что вы думаете?
Примечание: проект является частным, поэтому я не могу поделиться им полностью … извините за это. Если нужны дополнительные источники, пожалуйста, скажите мне, и я постараюсь сделать демонстрационный поддельный проект 🙂

Заранее спасибо

Комментарии:

1. Есть ли у вас конкретная проблема?

2. Нет, это просто желание учиться и все правильно 🙂