在Docker Ruby Alpine上安装Postgres

时间:2019-04-18 11:08:12

标签: ruby postgresql docker alpine

我正在尝试使用Docker完成我的Rails应用程序的设置。对于开发,我想使用Dokku(不支持撰写)进行部署,而我使用docker-compose.yml,对于生产仅使用Dockerfile

在开发过程中,一切正常,我得到了我的容器(应用程序,webpacker和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"]

docker-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没问题,但是如果我要以生产方式构建并运行(没有撰写),那么我将无法正确安装pg。 以前,我使用的是Ruby超薄映像,然后使用以下命令:

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上。

我是个菜鸟,所以,如果答案似乎很明显,请原谅我。在此先感谢您的帮助!

0 个答案:

没有答案