Установка Postgres на Docker Ruby Alpine - PullRequest
0 голосов
/ 18 апреля 2019

Я пытаюсь завершить настройку приложения Rails, используя Docker. Для разработки я использую docker-compose.yml, а для производства просто Dockerfile, так как я хочу развернуть его с помощью Dokku (который не поддерживает compose).

В разработке все работает нормально, я получаю свои контейнеры (приложение, веб-упаковщик и postgres), но в производственном режиме мой контейнер postgres отсутствует ... и Dokku не может правильно развернуться. Я пробовал много способов, но ничего не получается: (

Dockerfile

FROM ruby:2.5.5-alpine

ARG PRECOMPILEASSETS

ENV NODE_OPTIONS "--max_old_space_size=4096"
ENV SECRET_KEY_BASE=foo

RUN apk add --update --no-cache \
    build-base \
    git \
    postgresql-dev \
    postgresql-client \
    imagemagick \
    nodejs-current \
    yarn \
    python2 \
    tzdata \
    file

RUN gem install bundler
# Install gems
RUN mkdir /gems
WORKDIR /gems
COPY Gemfile .
COPY Gemfile.lock .
RUN bundle install -j4 --retry 3 \
    # Remove unneeded files (cached *.gem, *.o, *.c)
    && rm -rf /usr/local/bundle/cache/*.gem \
    && find /usr/local/bundle/gems/ -name "*.c" -delete \
    && find /usr/local/bundle/gems/ -name "*.o" -delete

RUN yarn install

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

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

# Expose Puma port
EXPOSE 3000

CMD ["docker/startup.sh"]

докер-compose.yml

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

  webpacker:
    image: beweeg_development
    command: bin/webpack-dev-server
    volumes:
      - .:/beweeg:cached
    ports:
      - 3035:3035

  app:
    image: beweeg_development
    build:
      context: .
      args:
        - PRECOMPILEASSETS=NO
    links:
      - db
      - webpacker
    ports:
      - 3000:3000
    volumes:
      - .:/beweeg:cached

Как вы увидите, использование docker-compose не создает проблем, но если я хочу собрать и запустить как производство (без compose), то я не могу правильно установить pg. Ранее я использовал Ruby Slim Image, а затем с помощью следующей команды:

RUN apt-get update && 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 -

работал хорошо ... но чтобы уменьшить размеры моих изображений, я бы предпочел остаться сейчас с Alpine.

Я довольно нуб, поэтому, пожалуйста, прости меня, если ответ кажется очевидным ... И заранее спасибо за вашу помощь!

...