APK Docker Невозможно заблокировать базу данных: в доступе отказано - PullRequest
0 голосов
/ 10 февраля 2020

У меня есть следующие ошибки в docker build

ОШИБКА: невозможно заблокировать базу данных: отказано в разрешении ОШИБКА: не удалось открыть базу данных apk: отказано в разрешении

Странно то, что первый раздел APK ADD работает нормально:

Step 31/41 : RUN apk add --no-cache         bash         ca-certificates         openjdk11-jre-headless         tzdata
     tini         xmlstarlet     && wget -O  /usr/local/bin/wait-for-it.sh       "https://raw.githubusercontent.com/vishnubob/wait-for-it/a454892f3c2ebbc22bd15e446415b8fcb7c1cfa4/wait-for-it.sh" --no-check-certificate     && chmod +x /usr/local/bin/wait-for-it.sh

, но вторая часть не:

Step 36/41 : RUN apk add openssh      && echo "root:Docker!" | chpasswd
 ---> Running in 5626e233c96d
ERROR: Unable to lock database: Permission denied
ERROR: Failed to open apk database: Permission denied

мой docker файл ниже

FROM alpine:3.10 as builder

ARG VERSION=7.12.0
ARG DISTRO=tomcat
ARG SNAPSHOT=true

ARG EE=false
ARG USER
ARG PASSWORD

RUN apk add --no-cache \
        ca-certificates \
        maven \
        tar \
        wget \
        xmlstarlet

COPY settings.xml download.sh camunda-tomcat.sh camunda-wildfly.sh  /tmp/

RUN /tmp/download.sh

#Enable Basic AUTH
COPY web.xml /camunda/webapps/engine-rest/WEB-INF/web.xml 

##### FINAL IMAGE #####

FROM alpine:3.10

ARG VERSION=7.12.0



ENV CAMUNDA_VERSION=${VERSION}
ENV DB_DRIVER=com.microsoft.sqlserver.jdbc.SQLServerDriver
ENV DB_URL=xxx
ENV DB_USERNAME=xx
ENV DB_PASSWORD=xx
ENV DB_CONN_MAXACTIVE=20
ENV DB_CONN_MINIDLE=5
ENV DB_CONN_MAXIDLE=20
ENV DB_VALIDATE_ON_BORROW=true
ENV DB_VALIDATION_QUERY="SELECT 1"
ENV SKIP_DB_CONFIG=
ENV WAIT_FOR=
ENV WAIT_FOR_TIMEOUT=120
ENV TZ=UTC
ENV DEBUG=TRUE
ENV JAVA_OPTS="-Xmx768m -XX:MaxMetaspaceSize=256m"

EXPOSE 8080 8000

# Downgrading wait-for-it is necessary until this PR is merged
# https://github.com/vishnubob/wait-for-it/pull/68
RUN apk add --no-cache \
        bash \
        ca-certificates \
        openjdk11-jre-headless \
        tzdata \
        tini \
        xmlstarlet \
    && wget -O  /usr/local/bin/wait-for-it.sh \
      "https://raw.githubusercontent.com/vishnubob/wait-for-it/a454892f3c2ebbc22bd15e446415b8fcb7c1cfa4/wait-for-it.sh" --no-check-certificate \
    && chmod +x /usr/local/bin/wait-for-it.sh

RUN addgroup -g 1000 -S camunda && \
    adduser -u 1000 -S camunda -G camunda -h /camunda -s /bin/bash -D camunda
WORKDIR /camunda
USER camunda

#MSSQL SERVER JDBC DRIVER INSTALL
COPY mssql-jdbc-7.2.2.jre11.jar /camunda/lib/

# ssh
RUN apk add openssh \
     && echo "root:Docker!" | chpasswd 

COPY sshd_config /etc/ssh/
EXPOSE 80 2222

# end ssh config

ENTRYPOINT ["/sbin/tini", "--"]
CMD "./camunda.sh" && "/usr/sbin/sshd"

COPY --chown=camunda:camunda --from=builder /camunda .

1 Ответ

1 голос
/ 10 февраля 2020
USER camunda
...
RUN apk add openssh

camunda пользователь не может установить apk пакеты, у него нет прав для этого. Установите все пакеты перед переключением пользователя. Или переключите пользователя позже, непосредственно перед установкой CMD в зависимости от того, что вы хотите сделать. Или добавьте sudo и добавьте NOPASSWD awk в sudoers файл для camunda и сделайте это с sudo. В любом случае - убедитесь, что у вас есть права на запуск apk и выполнение chpassw.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...