Невозможно запустить два docker-контейнера с docker-compose. Я получаю сообщение об ошибке: «python: невозможно открыть файл app.py»: [Errno 2] Нет такого файла или каталога » - PullRequest
0 голосов
/ 17 апреля 2019

Я пытаюсь запустить два веб-сервиса в 2 отдельных контейнерах, но не могу запустить их оба одновременно.По отдельности они оба работают.

Моя структура проекта такова:

/
- docker-compose.yml
- Dockerfile
- pom.xml
- src/
- ... other spring boot web service folders and files
- Pirmas/
  -Dockerfile
  -app.py
  -docker-compose.yml (it is not used when running both services)

Один веб-сервис находится в главном каталоге, другой - в каталоге "Pirmas".Я пытаюсь запустить docker composer из базовой папки, где находится служба весенней загрузки.Я использую команду "docker-compose up --build -d".

Тем не менее, после сборки запускается только веб-служба весенней загрузки, и когда я проверяю логи веб-службы фляги, она говорит: «python: не удается открыть файл app.py»: [Errno 2] Неттакой файл или каталог "

Мой весенний загрузочный сервис Dockerfile:

FROM maven:3.6-jdk-8 AS build  

WORKDIR /code

COPY src /code/app/src
COPY pom.xml /code/app
RUN mvn -f /code/app/pom.xml clean install

FROM openjdk:8
COPY --from=build /code/app/target/SpringWebServiceToDoList-0.0.1-SNAPSHOT.jar SpringWebServiceToDoList-0.0.1-SNAPSHOT.jar
EXPOSE 5000
CMD ["java","-jar","SpringWebServiceToDoList-0.0.1-SNAPSHOT.jar"]

Мой файл docker-compose.yml в том же каталоге:

version: '3'

services:
  springboot-docker-compose-app-container:
    build: .
    ports:
      - "80:5000"
    depends_on:
    - friendservice
    volumes:
    - .:/code
    networks:
    - mynet
  friendservice:
    build: ./Pirmas
    command: python app.py
    ports:
    - 5000:5001
    networks:
    - mynet

networks:
    mynet:

Мой Dockerfile вфлэш-веб-сервис:

FROM python:3

WORKDIR /code

COPY requirements.txt ./
RUN pip install -r requirements.txt

Наконец, docker-compose.yml, который, как я полагаю, не используется (из каталога веб-сервиса фляги "Pirmas"):

web:
  build: .
  command: python app.py
  ports:
    - "80:5000"
  volumes:
    - .:/code

Что япопробовал:

Я попытался удалить тома.Пробовал разные пути в docker-compose.yml как python ./Pirmas/app.py

Буду благодарен за любую помощь или идеи.

Спасибо.

EDIT

У меня похожая проблема при попытке запустить другой проект, но на этот раз приложение Spring Boot.

The project structure:/
    - docker-compose.yml
    - Dockerfile
    - pom.xml
    - src/
    - ... other spring boot web service folders and files
    - rest-bookstore/
      -Dockerfile
      -rest
        -src
        -target
          -gs-rest-service-0.1.0.jar

Старый Docker-файл первой службы весенней загрузки такой же, как и новый:

FROM maven:3.6.0-jdk-8-alpine
COPY rest /rest
WORKDIR /rest
RUN mvn clean package
CMD java -jar target/gs-rest-service-0.1.0.jar --server.port=5000

И docker-compose.yml

version: '3'

services:
  springboot-docker-compose-app-container:
    build: .
    ports:
      - "80:5000"
    depends_on:
    - friendservice
    volumes:
    - .:/code
    networks:
    - mynet
  friendservice:
    build: ./rest-bookstore
    volumes:
    - ./rest-bookstore:/rest
    ports:
    - 5000:5001
    networks:
    - mynet

networks:
    mynet:

Я получаю сообщение об ошибке:

Невозможно получить доступ к jarfile target / gs-rest-service-0.1.0.jar

И я не знаю почему, поскольку вновый dockerfile копирует весь остальной каталог

1 Ответ

0 голосов
/ 17 апреля 2019

Ваш friendservice не имеет app.py внутри. Вам следует скопировать его, чтобы ваш Dockerfile выглядел как

FROM python:3

WORKDIR /code

COPY requirements.txt ./
RUN pip install -r requirements.txt

COPY app.py ./

Или вы можете добавить громкость в docker-compose.yml, чтобы она выглядела как

...
  friendservice:
    build: ./Pirmas
    command: python app.py
    ports:
    - 5000:5001
    volumes:
    - ./Pirmas:/code
    networks:
    - mynet
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...