Как должен выглядеть мой файл docker -compose.yml для использования HAProxy с Heroku и Docker? - PullRequest
1 голос
/ 11 апреля 2020

Я пытался следовать этой статье , но сейчас многие вещи выглядят по-другому, так что я закончил импровизировать. Я хотел бы просто соединить мой интерфейс с моим бэкэндом, избегая головной боли CORS (хотя сейчас я не уверен, какая головная боль больше). В любом случае, я определил свой балансировщик нагрузки следующим образом:

приложение. json:

{
  "name": "NeuroCore Load Balancer",
  "description": "A load balancer for NeuroCore"
}

Procfile:

web: sbin/haproxy -f haproxy.cfg

Dockerfile:

FROM heroku/heroku:18

RUN mkdir -p /app/user  
WORKDIR /app/user

# Install HAProxy

RUN apt-get update && apt-get install -y libssl1.0.0 libpcre3 --no-install-recommends && rm -rf /var/lib/apt/lists/*

ENV HAPROXY_MAJOR 1.5  
ENV HAPROXY_VERSION 1.5.14  
ENV HAPROXY_MD5 ad9d7262b96ba85a0f8c6acc6cb9edde

# see http://sources.debian.net/src/haproxy/1.5.8-1/debian/rules/ for some helpful navigation of the possible "make" arguments
RUN buildDeps='curl gcc libc6-dev libpcre3-dev libssl-dev make' \  
    && set -x \
    && apt-get update && apt-get install -y $buildDeps --no-install-recommends && rm -rf /var/lib/apt/lists/* \
    && curl -SL "http://www.haproxy.org/download/${HAPROXY_MAJOR}/src/haproxy-${HAPROXY_VERSION}.tar.gz" -o haproxy.tar.gz \
    && echo "${HAPROXY_MD5}  haproxy.tar.gz" | md5sum -c \
    && mkdir -p /app/user/src/haproxy \
    && tar -xzf haproxy.tar.gz -C /app/user/src/haproxy --strip-components=1 \
    && rm haproxy.tar.gz \
    && make -C /app/user/src/haproxy \
        TARGET=linux2628 \
        USE_PCRE=1 PCREDIR= \
        USE_OPENSSL=1 \
        USE_ZLIB=1 \
    PREFIX=/app/user \
        all \
        install-bin \
    && rm -rf /app/user/src/haproxy \
    && apt-get purge -y --auto-remove $buildDeps

COPY haproxy.cfg /app/user/haproxy.cfg

haproxy.cfg:

global  
    maxconn 256

defaults  
    mode http
    timeout connect 5000ms
    timeout client 50000ms
    timeout server 50000ms

frontend http  
    bind 0.0.0.0:$PORT

    option forwardfor

    # Force SSL
    redirect scheme https code 301 if ! { hdr(x-forwarded-proto) https }

    # And all other requests to `example-com`.
    default_backend neurocore-backend

backend neurocore-backend  
    http-request set-header X-Forwarded-Host neurocore.herokuapp.com
    http-request set-header X-Forwarded-Port %[dst_port]

    reqirep ^Host: Host:\ neurocore-backend.herokuapp.com    

    server backend neurocore-backend.herokuapp.com:443 ssl verify none

После запуска docker-compose up web я получаю:

ERROR: 
        Can't find a suitable configuration file in this directory or any
        parent. Are you in the right directory?

        Supported filenames: docker-compose.yml, docker-compose.yaml

Насколько я понимаю, этот файл должен быть сгенерирован командой heroku docker:init, но в настоящее время он не работает. Итак, что я должен сделать, чтобы мое приложение заработало?

...