Докер: ошибка прав доступа в OpenShift Origin 3.6 - PullRequest
0 голосов
/ 09 июня 2018

Я пытаюсь запустить довольно простой 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)
...