我正在尝试在OpenShift Origin 3.6中运行一个非常简单的Flask API。我可以在本地和远程构建这个容器,但是当我在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)