Я пытаюсь завершить настройку приложения 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.
Я довольно нуб, поэтому, пожалуйста, прости меня, если ответ кажется очевидным ... И заранее спасибо за вашу помощь!