#docker #docker-compose #containers #load-balancing #scale
Вопрос:
довольно новичок в Докере. Я закрепляю новую установку Rails 6. У меня есть контейнер, который нужно запустить и открыть страницу приветствия на Rails.
Моя проблема двоякая:
- Как ни странно, единственное место, где я указываю порт 3000, находится в разделе 3000 файла Dockerfile. HAProxy каким-то образом выясняет, куда переслать? Я чувствую, что здесь что-то не так.
- Кроме того, я могу запустить все это на 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 "$@"
Любые идеи будут высоко оценены. Я застрял на этом уже два дня. Тьфу.