Docker-compose запускает 2 контейнера, но работает только один сервис? - PullRequest
0 голосов
/ 19 октября 2018

Последнее, что нужно:

Я хочу запустить 2 основных приложения Asp.net и иметь возможность вызывать каждое из них (через другой порт).

http://localhost:3333/api/values         // for webapplication3
http://localhost:5555/api/values         // for webapplication1

Мне удалось сделать это частично - но кажется, что одновременно активен только один .


Это файл docker для webapplication3 (в папке webapplication3)

FROM microsoft/dotnet:latest
WORKDIR /app
ADD ./bin/Debug/netcoreapp2.1 /app
EXPOSE 80
CMD  ["dotnet", "WebApplication3.dll"]

Это файл Docker для webapplication1 (в папке webapplication1)

FROM microsoft/dotnet:latest
WORKDIR /app
ADD ./bin/Debug/netcoreapp2.1 /app
EXPOSE 80
CMD  ["dotnet", "WebApplication1.dll"]

Файл Docker-compose.yml:

version: '3.4'

services:

  webapplication3:
    image: microsoft/dotnet:latest
    build: ./WebApplication3
    ports:
      - "3333:80"



  webapplication1:
    image: microsoft/dotnet:latest
    build: ./WebApplication1
    ports:
      - "5555:80"

Отлично, давайте строить и наращивать:

enter image description here

Как вы можете видеть, оба включены:

Давайте посмотрим docker ps:

enter image description here

Теперь давайте попробуем вызвать:

enter image description here

Как вы видите, оба работают, НО я должен был получить РАЗНЫЙ результат!

( Я изменил действия для получения разных результатов )

Я ожидаю, что

http://localhost:3333/api/values покажет I'm response from webapplication 1

И

http://localhost:5555/api/values покажет I'm response from webapplication 3

Как настроен файл YML

Вопрос:

Как сделать так, чтобы к каждой конечной точке обращались порты, которые я объявил в docker-compose?

Ответы [ 2 ]

0 голосов
/ 20 октября 2018

Какого черта ....

Я понял, в чем была моя проблема.
Я объясню, как я получил этот ответ.

Сначала я сказалЯ: «Забудьте yml», давайте запустим его вручную.

перейдите в папку webapplication 1 ----> docker run -p 5555:80 -d 3f10b9720b26

перейдите в папку webapplication 3 ----> docker run -p 3333:80 -d 3f10b9720b26

enter image description here

И все же я ПОЛУЧИЛ тот же результат!

enter image description here

Так что дело не в yml

Тогда я подумал: «Я переопределяю одно и то же изображение снова и снова, что если я пометить каждое из них по-разному?»

Итак, я изменил yml, чтобы фактически работать с изображением и добавить тег : (который в основном создает два разных изображения)

enter image description here

version: '3.4'

services:

  webapplication3:
    image: microsoft/dotnet:foo
    build: ./WebApplication3
    ports:
      - "3333:80"
    depends_on:
      - webapplication1


  webapplication1:
    image: microsoft/dotnet:bar
    build: ./WebApplication1
    ports:
      - "5555:80"

А теперь ..........

enter image description here

Решено.

Не run на том же изображении снова и снова.используйте теги.

0 голосов
/ 19 октября 2018

Трудно дать однозначный ответ, потому что проблемы вполне могут быть за пределами информации, которую предоставляет ваш вопрос.Но я могу попытаться дать вам несколько советов по устранению неполадок:

  1. Запустите свои сервисы с docker-compose up -d (как вы, вероятно, уже сделали)
  2. , проверьте статус и переадресацию портов с помощью docker-compose ps
  3. Проверьте ваши API
  4. Остановите одну службу с помощью docker stop webapplication1
  5. Повторите 2. & 3.

Можете ли вы по-прежнему получать доступ к обоим портам?

Как видите, оба работают, НО оба переходят на один и тот же сервис!

100% уверены, что это действительно так?

...