Проблемы с балансировщиком нагрузки Docker Compose HAProxy

#docker #docker-compose #containers #load-balancing #scale

Вопрос:

довольно новичок в Докере. Я закрепляю новую установку Rails 6. У меня есть контейнер, который нужно запустить и открыть страницу приветствия на Rails.

Моя проблема двоякая:

  1. Как ни странно, единственное место, где я указываю порт 3000, находится в разделе 3000 файла Dockerfile. HAProxy каким-то образом выясняет, куда переслать? Я чувствую, что здесь что-то не так.
  2. Кроме того, я могу запустить все это на 80-м порту, и это работает в браузере, но он не регистрирует выходные данные из моей веб-службы в моем файле docker-compose.yml.

docker-создать файл

 version: "3.9" services:   web:  build: .  command: bash -c "rm -f tmp/pids/server.pid amp;amp; bundle exec puma"  volumes:  - .:/docker-rails  depends_on:  - db  restart: always    db:  image: postgres  volumes:  - /Users/todd/Sites/docker-rails/postgres:/var/lib/postgresql/data  environment:  POSTGRES_PASSWORD: password  ports:  - "5432:5432"  restart: always    load-balancer:  image: dockercloud/haproxy  container_name: load-balancer  links:  - web  volumes:  - /var/run/docker.sock:/var/run/docker.sock  ports:  - "80:80"  

Докерфайл

 FROM ruby:2.5 RUN apt-get update -qq amp;amp; apt-get install -y nodejs npm postgresql-client RUN npm install --global yarn  WORKDIR /docker-rails COPY Gemfile /docker-rails/Gemfile COPY Gemfile.lock /docker-rails/Gemfile.lock RUN bundle install  COPY entrypoint.sh /usr/bin/ RUN chmod  x /usr/bin/entrypoint.sh ENTRYPOINT ["entrypoint.sh"] EXPOSE 3000  

entrypoint.sh

 #!/bin/bash set -e  # Remove a potentially pre-existing server.pid for Rails. rm -f /docker-rails/tmp/pids/server.pid  # Then exec the container's main process (what's set as CMD in the Dockerfile). exec "$@"  

Любые идеи будут высоко оценены. Я застрял на этом уже два дня. Тьфу.