docker - 运行 docker-compose up 后数据库权限被拒绝

运行 docker-compose up 后出现以下错误。我该如何解决这个问题?

db_1          | chown: changing ownership of '/var/lib/mysql/': Permission denied
db_1          | chown: changing ownership of '/var/lib/mysql/@0020liquordb': Permission denied
db_1          | chown: changing ownership of '/var/lib/mysql/@0020liquordb/db.opt': Permission denied
db_1          | chown: changing ownership of '/var/lib/mysql/auto.cnf': Permission denied
db_1          | chown: changing ownership of '/var/lib/mysql/ca-key.pem': Permission denied
db_1          | chown: changing ownership of '/var/lib/mysql/ca.pem': Permission denied
db_1          | chown: changing ownership of '/var/lib/mysql/client-cert.pem': Permission denied
db_1          | chown: changing ownership of '/var/lib/mysql/client-key.pem': Permission denied

docker 文件

FROM python:3.7


ENV PYTHONUNBUFFERED 1

ADD requirements.txt /app/

WORKDIR /app/

RUN pip install --upgrade pip


RUN pip install -r requirements.txt

docker-compose.yml

version: '3'

services:

  # Redis - result backend
  redis:
    image: redis:2.8.19
    hostname: redis

  # RabbitMQ - queue
  rabbit:
    hostname: rabbit
    image: rabbitmq:3-management
    environment:
      - RABBITMQ_DEFAULT_USER=test
      - RABBITMQ_DEFAULT_PASS=test
    ports:
      - "5672:5672"  
      - "15672:15672"  # here, we can access rabbitmq management plugin


  nginx:
    image: nginx:alpine
    container_name: nginx

    restart: always

    ports:
      - "7000:7000"
      - "443:443"

    depends_on:
      - web

    volumes:
      - /app:/app
      - ./config/nginx:/etc/nginx/conf.d
      - /static:/app/static # <-- bind the static volume
      - media_volume:/media  # <-- bind the media volume

  db:
    restart: always
    image: mysql:5.7
    command: --default-authentication-plugin=mysql_native_password
    volumes:
      # - ./init-db:/docker-entrypoint-initdb.d
      - ./data-db:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: test
      MYSQL_DATABASE: test
    ports:
      - "3306:3306"


  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    environment:
      MYSQL_USERNAME: test
      MYSQL_ROOT_PASSWORD: test
    restart: always
    ports:
      - 8082:80
    volumes:
      - /sessions


  web:
    build:
      context: .
      dockerfile: Dockerfile
    hostname: web
    restart: always
    command: sh ./run_web.sh
    volumes:
      - .:/app
      - /static:/app/static

    depends_on:
      - db

    links:
      - rabbit
      - redis

    expose: 
    - "7000"


  # Celery worker
  worker:
    build:
      context: .
      dockerfile: Dockerfile
    command: sh ./run_celery.sh

    volumes:
      - .:/app
    links:
      - rabbit
      - redis

    depends_on:
      - rabbit

volumes:
  media_volume:  # <-- declare the media volume
  api_data:
  my-db:
  init-db:
  data-db:

最佳答案

您可以尝试在 docker-compose.yml 中编辑 db 服务,并进行以下更改:

volumes:
  # - ./init-db:/docker-entrypoint-initdb.d
  - ./data-db:/var/lib/mysql:rw # <- permissions
user: mysql # <- user

https://stackoverflow.com/questions/60950070/

相关文章:

spring-boot - Spring WebFlux Reactive 和 Kotlin Cor

angular - 使用 ngrx 和选择器等待资源加载到守卫中

jenkins - 在airflow中的特定时间运行任务

regex - PowerShell 从脚本中删除所有注释

prometheus - 如何在普罗米修斯中获取速率的分位数

sql - Postgres : How do I extract year and month f

python - 使用 Gmail Python 发送电子邮件

firefox - 如何删除 Firefox 中的 X 按钮?

java - 从 JSONObject 中删除除一个之外的所有键

scala - 为什么zio的putStrLn没有输出