bogdan_uman
@bogdan_uman
шлЫмазл неукЪ-поцЪ

Nginx/Passenger + Rails в контейнере?

Здравствуйте. Подскажите пожалуйста. У меня есть настроенный сервер под CentOS, по инструкции

Теперь хочу перенести его в Docker контейнер. Как бы вопрос состоим в том, что по данной инструкции у меня сам Nginx стартует сервер Rails c Passenger.
server {
    listen 80;
    server_name yourserver.com;

    # Tell Nginx and Passenger where your app's 'public' directory is
    root /var/www/myapp/code/public;

    # Turn on Passenger
    passenger_enabled on;
    passenger_ruby /path-to-ruby;
}

А по идеологии докера каждый контейнер теперь один сервер, и теперь Рельсу и Nginx нужно разделять, и как тогда правильно сделать что бы Nginx стартовал сервер Рельсы, или вообще как правильно сделать?
Спасибо.
  • Вопрос задан
  • 574 просмотра
Решения вопроса 1
chupasaurus
@chupasaurus
Сею рефлекторное, злое, временное
Код с Passenger - в одном контейнере, nginx в другом и реверсит на первый. Желательно статику класть отдельно, чтобы можно было скормить nginx.

Минимальный Dockerfile:
FROM ruby:2.5-alpine
ADD . /app
WORKDIR /app
RUN bundle install
CMD ["bundle", "exec", "passenger", "start"]

docker-compose.yml:
version: '2'
services:
  passenger:
    build: ./
    restart: always
    #ports:
    #  - 3000:3000 (для дебага)

  nginx:
    image: nginx:mainline-alpine
    restart: always
    volumes:
      #- ./nginx.conf:/etc/nginx/nginx.conf
      - ./nginx-site.conf:/etc/nginx/conf.d/passenger.conf
      #- /path/to/static/:/path/in/container/

В nginx-site.conf вместо passenger-директив (возможно понадобятся заголовки для проксирования типа X-Real-IP): proxy_pass http://passenger:3000;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы