рельсы докер-композитор не привязывают порт 80 - PullRequest
0 голосов
/ 19 декабря 2018

Мое приложение rails работает нормально, если я установил в конфигурации Docker целевой порт 3000. Но я не могу запустить его на порту 80. Это Dockerfile, который создает веб-сервис:

FROM ruby:2.3.7

RUN apt-get update -qq && apt-get install -y build-essential libpq-dev
RUN apt-get install -y postgresql postgresql-contrib
RUN mkdir /app
WORKDIR /app

COPY Gemfile ./Gemfile
COPY Gemfile.lock ./Gemfile.lock

RUN gem install bundler
RUN bundle install
COPY . .

RUN cp config/database.docker-dev.yml config/database.yml

CMD [ "bundle", "exec", "rails", "s", "-p", "3000", "-b" "0.0.0.0" ]

И это docker-compose.yml:

version: '3'
services:
  memcached:
    image: memcached:1.5.2-alpine
    restart: always
    ports:
      - "11211:11211"

  postgres:
    image: postgres:9.4-alpine
    restart: always
    volumes:
      - ~/.engine-data/postgres:/var/lib/postgresql/data
    ports:
      - "5432:5432"
    environment:
      - POSTGRES_DB=app_development
      - POSTGRES_USER=default
      - POSTGRES_PASSWORD=secret

  redis:
    image: redis:3.2.0-alpine
    restart: always
    volumes:
      - ~/.engine-data/redis:/data
    ports:
      - "6379:6379"

  web:
    build:
      context: .
      dockerfile: "Dockerfile-dev"
    command: ./wait-for-it.sh redis:6379 -- ./wait-for-it.sh postgres:5432 -- bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/opt/apps/engine
    depends_on:
      - memcached
      - redis
      - postgres
    ports:
      - "80:3000"
    env_file:
      - .env

  sidekiq:
    build:
      context: .
      dockerfile: "Dockerfile-dev"
    command: ./wait-for-it.sh redis:6379 -- ./wait-for-it.sh postgres:5432 -- bundle exec sidekiq
    volumes:
      - .:/opt/apps/engine
    depends_on:
      - web
      - postgres
      - redis
    env_file:
      - .env

  elastic:
    image: elasticsearch:1.5
    volumes:
      - ~/.engine-data/elasticsearch:/usr/share/elasticsearch/data
    ports:
      - "9200:9200"
      - "9300:9300"

Я попытался изменить команду rails s на использование порта 80 и затем привязать 80:80 в веб-сервисе на docker-compose, но получил тот же результат: сервер работает, но ПОЛУЧИТЕ localhost: 80 не достигнет его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...