У меня есть этот dockerfile:
FROM centos:latest
COPY mongodb.repo /etc/yum.repos.d/mongodb.repo
RUN yum update -y && \
yum install -y mongodb-org mongodb-org-shell iproute nano
RUN mkdir -p /data/db && chown -R mongod:mongod /data
, который я могу прекрасно собрать и запустить локально с помощью docker с помощью:
docker build -t my-image .
docker run -t -d -p 27017:27017 --name my-container my-image
docker cp mongod.conf my-container:/etc/mongod.conf
docker exec -u mongod my-container "mongod --config /etc/mongod.conf"
Теперь я хотел бы запустить контейнер в OpenShift.Мне удалось построить и поместить изображение в пространство имен.И создал ниже deployConfig , который запускает контейнер - точно так же, как я могу сделать локально.
- apiVersion: v1
kind: DeploymentConfig
metadata:
name: my-app
namespace: my-namespace
spec:
replicas: 1
selector:
app: my-app
template:
metadata:
labels:
app: my-app
deploymentconfig: my-app
spec:
containers:
- name: my-app
image: ${IMAGE}
command: ["mongod"]
ports:
- containerPort: 27017
imagePullPolicy: Always
Когда я нажимаю развертывание, изображение извлекается успешно, но я получаю ошибку:
exception in initAndListen: IllegalOperation: Attempted to create a lock file on a read-only directory: /data/db, terminating
Почему в папке /data/db
отсутствует чтение / запись?Как видно из приведенного выше Dockerfile , эта папка создана, и пользователь mongod является владельцем этой папки.
Необходимо ли предоставить mongod пользователь как-то читает / записывает в эту папку в deployConfig?