Я пытаюсь запустить довольно простой Flask API в OpenShift Origin 3.6.Я могу нормально создать этот контейнер локально и удаленно, но когда я иду на развертывание в OpenShift, я получаю ошибки прав доступа в строках RUN chmod -R 777 ...
.Кто-нибудь нашел способ обойти это?Интересно, в моей корпоративной среде не разрешено копирование такого типа, но все это в контейнере ...
Редактировать: предоставить абсолютно минимальный пример
Структура каталогов:
project
├── Dockerfile
└── app
└── api.py
Dockerfile
для создания базового образа:
FROM docker.io/ubuntu:16.04
RUN apt-get update && apt-get install -y --no-install-recommends \
cmake curl git make gunicorn nginx python3 python3-pip python3-setuptools build-essential \
&& apt-get clean && rm -rf /var/lib/apt/lists/*
RUN pip3 install --upgrade pip
RUN pip3 install pandas numpy scikit-learn scipy xgboost flask-restful nltk gunicorn
RUN mkdir -p /home/app
WORKDIR /
RUN python3 -c 'import nltk; nltk.download("punkt")'
RUN mv /root/nltk_data /home/app
Затем я запускаю docker build . -t project:latest --no-cache
.Затем Dockerfile
, который использует базовое изображение сверху для развертывания реального приложения (я просто закомментирую строки «базового изображения» сверху и раскомментирую их снизу, используя тот же файл Dockerfile
):
FROM project:latest
COPY app /home/app
RUN chmod -R 777 /home/app
WORKDIR /home/app
EXPOSE 5000
CMD ["python3", "api.py"]
Я создаю контейнер для развертывания, используя docker build . -t project:app --no-cache
.
api.py
:
import time
if __name__ == '__main__':
while True:
print('This app is running')
time.sleep(30)