Невозможно подключиться к контейнеру .net, запущенному программой docker compose - PullRequest
0 голосов
/ 13 марта 2019

Я запустил службу .net с базой данных mysql, и все контейнеры работают

109eeaf260e8        authentication_service:latest   "dotnet out/Authenti…"   9 seconds ago       Up 7 seconds        0.0.0.0:5003->80/tcp     authenticationservice_authentication_service_1
5da4ab86b093        mysql:8.0.3                     "docker-entrypoint.s…"   10 seconds ago      Up 8 seconds        0.0.0.0:3305->3306/tcp   authenticationservice_authentication_service_d

Теперь я отправляю HTTP-запрос почтальона на http://192.168.0.4:5003/api/authentication/5 Я пытался с :5000, :80 илиauthentification_serivce:PORT также.Но всегда я получаю тайм-аут или не найден.

Когда я запускаю то же самое в IDE и звоню http://localhost:5000/api/authentication/5, я получаю ожидаемое значение.

Я пытался работать с EXPOSE 80 в моем Dockerfile, но безуспешно.

Мой docker-compose:

version: '3.1'

networks:
  overlay:
services:
  authentication_service:
    image: authentication_service:latest
    depends_on:
      - "authentication_service_db"
      - "adminer"
    build:
      context: .
      dockerfile: Dockerfile
    links:
      - authentication_service_db
    ports:
      - 5003:80
    networks:
      - overlay
  authentication_service_db:
    image: mysql:8.0.3
    environment:
      MYSQL_ROOT_PASSWORD: secret
      MYSQL_DATABASE: authenticationdb
    ports:
      - 3305:3306
    restart: always
    volumes:
      - ./data-authentication:/var/lib/mysql
    networks:
      - overlay
  adminer:
    image: adminer
    restart: always
    ports:
      - 8080:8080
    networks:
      - overlay

Мой контейнер живёт (и слушает)

Hosting environment: Production
Content root path: /app
Now listening on: http://[::]:80
Application started. Press Ctrl+C to shut down.

Так что я запутался.Как я могу подключиться к приложению .net в моем сервисе?Кажется, что мое сопоставление портов неверно, или я забыл базовую конфигурацию в моем docker-compose или в .net?

(Если вам нужно больше настроек из проекта или Dockerfile, пожалуйста, оставьте комментарий)

1 Ответ

2 голосов
/ 13 марта 2019

Вы определяете authentication_service с сопоставлением портов

ports:
      - 5003:80

в вашем docker-compose.yml.Это означает, что запросы на порт 5003 на вашем хосте докера будут переадресованы на порт 80 вашего контейнера authentication_service.

Таким образом (если на самом деле контейнер службы authentication_service прослушивает порт 80) URL-адрес, который вы должны запуститьна вашем хосте докера:

http://localhost:5003/api/authentication/5

...