【问题标题】:Docker: run script : ERROR: Unable to lock database: Permission deniedDocker:运行脚本:错误:无法锁定数据库:权限被拒绝
【发布时间】:2020-09-20 03:21:44
【问题描述】:

您好,我正在尝试运行一个脚本,以便在我的 postgres 连接后启动我的纱线开发:

until psql -c '\l'; do
  echo >&2 "$(date +%Y%m%dt%H%M%S) Postgres is unavailable - sleeping"
  sleep 1
done
echo >&2 "$(date +%Y%m%dt%H%M%S) Postgres is up - executing command"

exec ${@}

泊坞窗文件:

    #building code
    FROM node:lts-alpine

    RUN mkdir -p /home/node/api && chown -R node:node /home/node/api

    WORKDIR /home/node/api

    COPY ormconfig.json .env package.json yarn.* ./

    USER node

    RUN yarn

    COPY --chown=node:node . .

    RUN apk add --no-cache openssl

    COPY wait-pg.sh ./
    RUN chmod +x /wait-pg.sh
    ENTRYPOINT ["/wait-pg.sh"]

    EXPOSE 4000

    CMD ["yarn", "dev"]

码头工人撰写:

version: '3.7'
services:
  db-pg:
    image: postgres:12
    container_name: db-pg
    ports:
      - '${DB_PORT}:5432'
    environment:
      ALLOW_EMPTY_PASSWORD: 'no'
      POSTGRES_USER: ${DB_USER}
      POSTGRES_PASSWORD: ${DB_PASS}
      POSTGRES_DB: ${DB_NAME}
    volumes:
      - ci-postgres-data:/data

  ci-api:
    build: .
    container_name: ci-api
    volumes:
      - .:/home/node/api
      - /home/node/api/node_modules
    ports:
      - '${SERVER_PORT}:${SERVER_PORT}'
    depends_on:
      - db-pg
    command: ['./wait-pg.sh', 'yarn', 'dev']
    logging:
      driver: 'json-file'
      options:
        max-size: '10m'
        max-file: '5'

volumes:
  ci-postgres-data:

并得到这个错误:

---> 在 c5add5098b70 中运行错误:无法锁定数据库: 权限被拒绝错误:无法打开 apk 数据库:权限 拒绝错误:服务'ci-api'未能构建:命令'/bin/sh -c apk add --no-cache openssl' 返回非零代码:99

【问题讨论】:

    标签: postgresql docker docker-compose


    【解决方案1】:

    您收到错误是因为您尝试使用的节点用户没有运行该命令的权限。 将用户定义移动到命令之后,如下所示:

      #building code
        FROM node:lts-alpine
    
        RUN mkdir -p /home/node/api && chown -R node:node /home/node/api
        WORKDIR /home/node/api
        COPY ormconfig.json .env package.json yarn.* ./
    
        RUN yarn
        COPY --chown=node:node . .
        RUN apk add --no-cache openssl
        COPY wait-pg.sh .
        RUN chmod +x ./wait-pg.sh
    
        USER node
    
    
    
        ENTRYPOINT ["./wait-pg.sh"]
        EXPOSE 4000
        CMD ["yarn", "dev"]
    

    【讨论】:

    • 我收到了这个错误:chmod: /wait-pg.sh: No such file or directory
    • 您正在将文件复制到 ./ 但试图从 / 运行它(这是两个不同的目录,点有很大的不同)尝试 chmod on ./wait-pg 请注意,您可能会更改你的切入点)
    • 你能帮我解决这个问题吗?我相信我不需要运行 docker 文件,但是通过 docker-composite 你能帮我看看它的外观吗?
    • 首先修复您的 docker 文件,然后发布您在运行 docker-compose 时可能遇到的任何错误。查看您的撰写文件,它看起来很好,除了节点应用程序中的第二卷,我认为您不需要它,因为它是您的第一卷的子卷。这是一个简单的 docker-compose,如果它有帮助,它将一个节点 js 应用程序连接到多个数据库bitbucket.org/Bolbeck/nodewithmultidb/src/master/…
    • 我不明白如何解决我的 dockerfile,我对 linux 不太了解:/你能帮帮我吗?
    猜你喜欢
    • 2018-11-16
    • 1970-01-01
    • 1970-01-01
    • 2020-05-18
    • 2018-03-27
    • 1970-01-01
    • 2014-02-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多