簡體   English   中英

PermissionError: [Errno 1] docker conatiner 嘗試連接到數據庫時不允許操作

[英]PermissionError: [Errno 1] Operation not permitted while a docker conatiner tries to connect to database

我正在嘗試從以下 docker-compose 文件構建 docker 容器。 除了一個拋出錯誤的容器外,所有容器都已創建並連接到 MySQL 數據庫。 它與其他容器具有相同的權限,並且為數據庫提供了相同的端口,但它不連接到數據庫。 這是來自docker 容器日志的錯誤

enabling audit logging
Waiting for database to be reachable 
Traceback (most recent call last):
  File "/usr/local/bin/celery", line 8, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.6/site-packages/celery/__main__.py", line 16, in main
    _main()
  File "/usr/local/lib/python3.6/site-packages/celery/bin/celery.py", line 322, in main
    cmd.execute_from_commandline(argv)
  File "/usr/local/lib/python3.6/site-packages/celery/bin/celery.py", line 499, in execute_from_commandline
    super(CeleryCommand, self).execute_from_commandline(argv)))
  File "/usr/local/lib/python3.6/site-packages/celery/bin/base.py", line 305, in execute_from_commandline
    return self.handle_argv(self.prog_name, argv[1:])
  File "/usr/local/lib/python3.6/site-packages/celery/bin/celery.py", line 491, in handle_argv
    return self.execute(command, argv)
  File "/usr/local/lib/python3.6/site-packages/celery/bin/celery.py", line 419, in execute
    ).run_from_argv(self.prog_name, argv[1:], command=argv[0])
  File "/usr/local/lib/python3.6/site-packages/celery/bin/base.py", line 309, in run_from_argv
    sys.argv if argv is None else argv, command)
  File "/usr/local/lib/python3.6/site-packages/celery/bin/base.py", line 393, in handle_argv
    return self(*args, **options)
  File "/usr/local/lib/python3.6/site-packages/celery/bin/base.py", line 253, in __call__
    ret = self.run(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/celery/bin/beat.py", line 100, in run
    maybe_drop_privileges(uid=uid, gid=gid)
  File "/usr/local/lib/python3.6/site-packages/celery/platforms.py", line 543, in maybe_drop_privileges
    _setuid(uid, gid)
  File "/usr/local/lib/python3.6/site-packages/celery/platforms.py", line 564, in _setuid
    initgroups(uid, gid)
  File "/usr/local/lib/python3.6/site-packages/celery/platforms.py", line 507, in initgroups
    return os.initgroups(username, gid)
PermissionError: [Errno 1] Operation not permitted
wait-for-it.sh: waiting 30 seconds for mysql:3306
wait-for-it.sh: mysql:3306 is available after 0 seconds
uid=1001(defectdojo) gid=65534(nogroup) groups=65534(nogroup) 

docker-compose.yml

    ---
version: '3.7'
services:
  nginx:
    build:
      context: ./jamshaid
      dockerfile: Dockerfile.nginx
    image: defectdojo/defectdojo-nginx:${NGINX_VERSION:-latest}
    restart: always
    depends_on:
      - uwsgi
    ports:
      - target: ${DD_PORT:-8080}
        published: ${DD_PORT:-9092}
        protocol: tcp
        mode: host
  uwsgi:
    build:
      context: ./jamshaid
      dockerfile: Dockerfile.django
    image: defectdojo/defectdojo-django:${DJANGO_VERSION:-latest}
    restart: always
    depends_on:
      - mysql
    entrypoint: ['/wait-for-it.sh', 'mysql:3306', '-t', '30', '--', '/entrypoint-uwsgi.sh']
    environment:
      DD_DEBUG: 'False'
      DD_ALLOWED_HOSTS: ${DD_ALLOWED_HOSTS:-*}
      DD_DATABASE_URL: ${DD_DATABASE_URL:-mysql://defectdojo:defectdojo@mysql:3306/defectdojo}
      DD_CELERY_BROKER_USER: ${DD_CELERY_BROKER_USER:-guest}
      DD_CELERY_BROKER_PASSWORD: ${DD_CELERY_BROKER_USER:-guest}
      DD_SECRET_KEY: ${DD_SECRET_KEY:-hhZCp@D28z!n@NED*yB!ROMt+WzsY*iq}
      DD_CREDENTIAL_AES_256_KEY: ${DD_CREDENTIAL_AES_256_KEY:-&91a*agLqesc*0DJ+2*bAbsUZfR*4nLw}
  celerybeat:
    image: defectdojo/defectdojo-django:latest
    restart: always
    depends_on:
      - mysql
      - rabbitmq
    entrypoint: ['/wait-for-it.sh', 'mysql:3306', '-t', '30', '--', '/entrypoint-celery-beat.sh']
    environment:
      DD_DATABASE_URL: ${DD_DATABASE_URL:-mysql://defectdojo:defectdojo@mysql:3306/defectdojo}
      DD_CELERY_BROKER_USER: ${DD_CELERY_BROKER_USER:-guest}
      DD_CELERY_BROKER_PASSWORD: ${DD_CELERY_BROKER_USER:-guest}
      DD_SECRET_KEY: ${DD_SECRET_KEY:-hhZCp@D28z!n@NED*yB!ROMt+WzsY*iq}
      DD_CREDENTIAL_AES_256_KEY: ${DD_CREDENTIAL_AES_256_KEY:-&91a*agLqesc*0DJ+2*bAbsUZfR*4nLw}
  celeryworker:
    image: defectdojo/defectdojo-django:latest
    restart: always
    depends_on:
      - mysql
      - rabbitmq
    entrypoint: ['/wait-for-it.sh', 'mysql:3306', '-t', '30', '--', '/entrypoint-celery-worker.sh']
    environment:
      DD_DATABASE_URL: ${DD_DATABASE_URL:-mysql://defectdojo:defectdojo@mysql:3306/defectdojo}
      DD_CELERY_BROKER_USER: ${DD_CELERY_BROKER_USER:-guest}
      DD_CELERY_BROKER_PASSWORD: ${DD_CELERY_BROKER_USER:-guest}
      DD_SECRET_KEY: ${DD_SECRET_KEY:-hhZCp@D28z!n@NED*yB!ROMt+WzsY*iq}
      DD_CREDENTIAL_AES_256_KEY: ${DD_CREDENTIAL_AES_256_KEY:-&91a*agLqesc*0DJ+2*bAbsUZfR*4nLw}
  initializer:
    image: defectdojo/defectdojo-django:latest
    restart: always
    depends_on:
      - mysql
    entrypoint: ['/wait-for-it.sh', 'mysql:3306', '--', '/entrypoint-initializer.sh']
    environment:
      DD_DATABASE_URL: ${DD_DATABASE_URL:-mysql://defectdojo:defectdojo@mysql:3306/defectdojo}
      DD_ADMIN_USER: ${DD_ADMIN_USER:-admin}
      DD_ADMIN_MAIL: ${DD_ADMIN_USER:-admin@defectdojo.local}
      DD_ADMIN_FIRST_NAME: ${DD_ADMIN_FIRST_NAME:-Admin}
      DD_ADMIN_LAST_NAME: ${DD_ADMIN_LAST_NAME:-User}
      DD_INITIALIZE: ${DD_INITIALIZE:-true}
      DD_SECRET_KEY: ${DD_SECRET_KEY:-hhZCp@D28z!n@NED*yB!ROMt+WzsY*iq}
      DD_CREDENTIAL_AES_256_KEY: ${DD_CREDENTIAL_AES_256_KEY:-&91a*agLqesc*0DJ+2*bAbsUZfR*4nLw}
  mysql:
    image: mysql:5.7.27@sha256:540488d8f0e04c1077d17934d1c1511fe417e2221dff508ce4621f5efe6131db
    restart: always
    environment:
      MYSQL_RANDOM_ROOT_PASSWORD: 'yes'
      DD_DATABASE_URL: ${DD_DATABASE_URL:-mysql://defectdojo:defectdojo@mysql:3306/defectdojo}
      MYSQL_USER: ${DD_DATABASE_USER:-defectdojo}
      MYSQL_PASSWORD: ${DD_DATABASE_PASSWORD:-defectdojo}
      MYSQL_DATABASE: ${DD_DATABASE_NAME:-defectdojo}
    command: ['mysqld', '--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci']
    volumes:
       - defectdojo_data:/var/lib/mysql
    ports:
       - 3306:3306
  rabbitmq:
    image: rabbitmq:3.7.17@sha256:12202c13c8e1d7f5688e733e04f3713cf25c4478dde62be691e0a1d2c9346d1c
    restart: always
volumes:
  defectdojo_data: {} 

該錯誤是由celerybeat: container 拋出的。 我無法理解原因,因為除了這個容器之外,所有容器都成功連接。 可能是什么問題? 多謝
Dockerfile.nginx

    #
# Nginx Dockerfile
#
# https://github.com/dockerfile/nginx
#

# Pull base image.
FROM ubuntu:18.04

# Install Nginx.
RUN \
  add-apt-repository -y ppa:nginx/stable && \
  apt-get update && \
  apt-get install -y nginx && \
  rm -rf /var/lib/apt/lists/* && \
  echo "\ndaemon off;" >> /etc/nginx/nginx.conf && \
  chown -R www-data:www-data /var/lib/nginx

# Define mountable directories.
VOLUME ["/etc/nginx/sites-enabled", "/etc/nginx/certs", "/etc/nginx/conf.d", "/var/log/nginx", "/var/www/html"]

# Define working directory.
WORKDIR /etc/nginx

# Define default command.
CMD ["nginx"]

# Expose ports.
EXPOSE 80
EXPOSE 443
 

Dockerfile.django

    FROM python:3.4-slim

RUN apt-get update && apt-get install -y \
        gcc \
        gettext \
        mysql-client libmysqlclient-dev \
        postgresql-client libpq-dev \
        sqlite3 \
    --no-install-recommends && rm -rf /var/lib/apt/lists/*

ENV DJANGO_VERSION 1.10.4

RUN pip install mysqlclient psycopg2 django=="$DJANGO_VERSION"
 

您應該嘗試使用 sudo 運行 docker-compose。 (如果尚未使用):

sudo docker-compose up

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM