Я создал несколько docker изображений для каждого простого приложения flask, я проверял, что они запускаются, как и ожидалось, при использовании команды docker run
. Теперь я пытаюсь подключить эти службы, используя docker -compose, и когда я запускаю docker-compose up --build
, я получаю следующую ошибку: Cannot start service lungs: OCI runtime create failed: container_linux.go:346: starting container process caused "exec: "python\": executable file not found in $PATH": unknown
.
Если я запускаю тот же контейнер в интерактивном режиме и проверяю PATH Я вижу, что это указывает на правильный python исполняемый файл. Мой dockerfile содержит:
FROM base_private_image # sets up a user and miniconda on ubuntu
USER root
ADD ./ ./ . # copy flask code into image
RUN pip install flask requests
USER user # setup in the base_private_image, we need our containers not to run as root
CMD ["python", "app.py"] # I've tried many variations of this CMD, all with the same result
пример содержимого docker -compose.yml
version: '3'
services:
central_service:
build: ./central_service
restart: always
environment:
- PATH=/home/user/miniconda3/bin/:$PATH
ports:
- '5010:5010'
expose:
- 5010
Кто-нибудь может указать, какая функциональная разница между docker -compose и docker run может быть причиной этого? Я не могу найти никаких проблем с установкой miniconda или python или PATH, поэтому я думаю, что это должно быть что-то скрытое в docker -compose?
, чтобы добавить: dockerfile that работает, docker -композит можно найти python:
FROM python:3.7.6-slim
RUN mkdir /trigger_app
WORKDIR /trigger_app
COPY requirements.txt ./
RUN pip install -r requirements.txt
ADD . ./
EXPOSE 6000
CMD flask run --host=0.0.0.0 --port=6000