मैंने mysql docker कंटेनर को चलाने और डेटाबेस को इनिशियलाइज़ करने वाली डेटाबेस स्क्रिप्ट का उपयोग करने के लिए एक docker कंपोज़ फ़ाइल बनाई है।

कंटेनर शुरू करते समय मुझे नीचे त्रुटि मिल रही है।

account-service-db_1  | Initializing database
account-service-db_1  | mysqld: Can't create/write to file '/var/lib/mysql/is_writable' (OS errno 13 - Permission denied)
account-service-db_1  | 2019-05-11T16:58:35.265463Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
account-service-db_1  | 2019-05-11T16:58:35.265550Z 0 [System] [MY-013169] [Server] /usr/sbin/mysqld (mysqld 8.0.16) initializing of server in progress as process 15
account-service-db_1  | 2019-05-11T16:58:35.268464Z 0 [ERROR] [MY-010460] [Server] --initialize specified but the data directory exists and is not writable. Aborting.
account-service-db_1  | 2019-05-11T16:58:35.268472Z 0 [ERROR] [MY-013236] [Server] Newly created data directory /var/lib/mysql/ is unusable. You can safely remove it.
account-service-db_1  | 2019-05-11T16:58:35.269284Z 0 [ERROR] [MY-010119] [Server] Aborting
account-service-db_1  | 2019-05-11T16:58:35.270510Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.16)  MySQL Community Server - GPL.
docker-swarm-account-service-mysql-demo_account-service-db_1 exited with code 1

शोध के बाद कई लोगों ने उपयोगकर्ता को जोड़ने का सुझाव दिया: "1000:50" लिखें फ़ाइल में समस्या हल हो जाएगी। लेकिन जोड़ने के बाद भी मुझे वही त्रुटि मिल रही है।

कृपया नीचे मेरी डॉकर-लिखें फ़ाइल ढूंढें

version: '3.7'

services:
 account-service-db:
    user: "1000:50"
    image: mysql
    environment:
      - MYSQL_DATABASE=account-service
      - MYSQL_USER=mysqluser
      - MYSQL_PASSWORD=mysqlpassword
      - MYSQL_ROOT_PASSWORD=mysqlpassword
    volumes:
      - "/Users/admin/dockerfiles/docker-swarm-account-service-mysql-demo/scripts/:/docker-entrypoint-initdb.d/"
      - "/Users/admin/dockerfiles/docker-swarm-account-service-mysql-demo/account:/var/lib/mysql" 
    ports:
      - "3306:3306"

    deploy:
     replicas: 1
     placement:
      constraints:
       - node.labels.mysql.node == true
     restart_policy:
      condition: on-failure
      delay: 10s
      #max-attempts: 3

मैं मैक मशीन में उपरोक्त परिदृश्य को क्रियान्वित कर रहा हूँ। कृपया मेरी मदद करें कि वॉल्यूम और स्क्रिप्ट फ़ोल्डर को सभी आवश्यक अनुमतियां देने के बाद ऐसा क्यों व्यवहार कर रहा है।

2
Madhu 11 मई 2019, 20:27

1 उत्तर

सबसे बढ़िया उत्तर

ऐसा लगता है कि समस्या आपके account फ़ोल्डर में है। यह पहले से ही उपयोग में हो सकता है या दूषित हो सकता है। एक नया फ़ोल्डर बनाएं और परीक्षण करें।

लिखें फ़ाइल में परिवेश मानों से दोहरे उद्धरण चिह्नों को निकालें।

यदि होस्ट पर माउंट किए जा रहे फ़ोल्डर में आवश्यक लेखन अनुमतियाँ नहीं हैं:

  1. अपने मेजबान/नोड के लिए ssh
  2. chmod -R a+rwx /path/to/account/folder
3
Rajesh Gupta 12 मई 2019, 02:46