Как предоставить доступ к моему API из контейнеров AWS EB multi docker?

#amazon-web-services #docker #nginx #docker-compose #amazon-elastic-beanstalk

Вопрос:

Мой интерфейс находится на порту 80 и доступен по электронной ссылке, предоставленной AWS. Что-то вроде того:

http://myapp-env.eba-xasnmn7n.sa-east-1.elasticbeanstalk.com/

Мой API находится на порту 9901, и я хотел бы предоставить его по этой же ссылке. Что-то вроде:

http://myapp-env.eba-xasnmn7n.sa-east-1.elasticbeanstalk.com/myapi

Как я могу это сделать?

Я получил доступ к экземпляру EC2 и протестировал контейнер и API с помощью curl, и он работает.

Файл настройки API

 FROM mcr.microsoft.com/dotnet/aspnet:5.0

WORKDIR /app
COPY . .

ENTRYPOINT ["dotnet", "SITR.Web.Host.dll", "--environment=Staging"]
 

Файл докера интерфейса

 FROM nginx

COPY . /usr/share/nginx/html
COPY default.conf /etc/nginx/conf.d
 

Это моя конфигурация nginx:

 gzip on;
gzip_vary on;
gzip_min_length 10240;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain text/css application/json application/x-javascript application/javascript text/xml application/xml application/rss xml text/javascript image/svg xml application/vnd.ms-fontobject application/x-font-ttf font/opentype;
gzip_disable "MSIE [1-6].";

server {
    listen       80;
    server_name  localhost;

    location / {
        root   /usr/share/nginx/html;
        try_files $uri $uri/ /index.html /index.htm;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}
 

Это мой файл docker-compose

 version: '3.0'

services:

    my_api:
        image: "850977987151.dkr.ecr.sa-east-1.amazonaws.com/my-api:latest"
        environment:
            ASPNETCORE_ENVIRONMENT: Staging
        ports:
            - "9901:80"
        volumes:
            - "./Logs:/app/Data/Logs"

    my_app:
        image: "850977987151.dkr.ecr.sa-east-1.amazonaws.com/my-app:latest"
        ports:
            - "80:80"