আমি কীভাবে ডকার পাত্রে স্কিমা দিয়ে একটি মাইএসকিউএল ডাটাবেস সূচনা করতে পারি?


165

আমি একটি মাইএসকিউএল ডাটাবেস সহ একটি ধারক তৈরি করার চেষ্টা করছি এবং এই ডাটাবেসে স্কিমা যুক্ত করব।

আমার বর্তমান ডকফেরাইল হ'ল:

FROM mysql
MAINTAINER  (me) <email>

# Copy the database schema to the /data directory
COPY files/epcis_schema.sql /data/epcis_schema.sql

# Change the working directory
WORKDIR data

CMD mysql -u $MYSQL_USER -p $MYSQL_PASSWORD $MYSQL_DATABASE < epcis_schema.sql

ধারক তৈরি করার জন্য আমি ডকারে প্রদত্ত ডকুমেন্টেশনগুলি অনুসরণ করছি এবং এই আদেশটি কার্যকর করছি:

docker run --name ${CONTAINER_NAME} -e MYSQL_ROOT_PASSWORD=${DB_ROOT_PASSWORD} -e MYSQL_USER=${DB_USER} -e MYSQL_PASSWORD=${DB_USER_PASSWORD} -e MYSQL_DATABASE=${DB_NAME} -d mvpgomes/epcisdb

কিন্তু যখন আমি এই কমান্ডটি কার্যকর করি তখন কনটেইনারটি তৈরি হয় না এবং ধারক স্থিতিতে এটি দেখতে পাওয়া যায় যে সিএমডি সফলভাবে সম্পাদন করা হয়নি, বাস্তবে কেবল mysqlকমান্ডটি কার্যকর করা হয়।

যাইহোক, স্কিমা দিয়ে ডেটাবেস সূচনা করার কোনও উপায় আছে বা আমাকে নিজে এই ক্রিয়াকলাপগুলি সম্পাদন করতে হবে?


আমি ধরে নিয়েছি যে আপনি একটি ডেটাবেস দিয়ে নতুন চিত্র তৈরি করতে চান যা বীজযুক্ত এবং যেতে প্রস্তুত?
গ্রেগ

হ্যাঁ, আমি ঠিক তাই করতে চাই।
মার্কাস গমেস


: এখানে ব্যাখ্যা করা খুব medium.com/@lvthillo/...
lvthillo

উত্তর:


105

এই দীর্ঘ উত্তরের জন্য আমি দুঃখিত, কিন্তু, আপনি যেখানে যেতে চান সেখানে যেতে আপনার কিছুটা পথ যেতে হবে। আমি বলব যে সাধারণত আপনি ডাটাবেসের জন্য স্টোরেজটি ডাটাবেসের মতোই রাখেন না, আপনি একটি হোস্ট ভলিউম মাউন্ট করবেন যাতে ডেটার হোস্টের উপর ডেটা অব্যাহত থাকে, অথবা, সম্ভবত একটি ধারক ব্যবহৃত হতে পারে ডেটা (/ var / lib / mysql) ধরে রাখুন। এছাড়াও, আমি মাইএসকিএল-এ নতুন, সুতরাং, এটি সম্ভবত দক্ষ নয়। বলেছিল ...

আমি মনে করি এখানে কয়েকটি সমস্যা থাকতে পারে। ডকফেরফাইল একটি চিত্র তৈরি করতে ব্যবহৃত হয়। আপনার বিল্ড পদক্ষেপটি কার্যকর করতে হবে। সর্বনিম্ন, ডকফেরফিল রয়েছে এমন ডিরেক্টরি থেকে আপনি এমন কিছু করতে পারেন:

docker build .

ডকফাইফাইল চিত্রটি তৈরি করতে বর্ণনা করে। আমি মাইএসকিএল সম্পর্কে খুব বেশি জানি না (আমি পোস্টগ্রিস ফ্যানবয়), তবে 'আমি কীভাবে মাইএসকিএল ডকার কনটেইনারটি চালু করব' এর জন্য আমি ইন্টারভিউগুলির আশেপাশে অনুসন্ধান করেছি। প্রথমে আমি কাজ করার জন্য একটি নতুন ডিরেক্টরি তৈরি করেছি, আমি এটিকে এমডিআর বলেছিলাম, তারপরে আমি একটি ফাইল ডিরেক্টরি তৈরি করেছি যা আমি একটি এপিসিস_সেমি.এসকিএল ফাইল জমা করেছি যা একটি ডাটাবেস এবং একটি একক সারণী তৈরি করে:

create database test;
use test;

CREATE TABLE testtab
(
id INTEGER AUTO_INCREMENT,
name TEXT,
PRIMARY KEY (id)
) COMMENT='this is my test table';

তারপরে আমি ফাইল ডিরেক্টরিতে init_db নামে একটি স্ক্রিপ্ট তৈরি করেছি:

#!/bin/bash

# Initialize MySQL database.
# ADD this file into the container via Dockerfile.
# Assuming you specify a VOLUME ["/var/lib/mysql"] or `-v /var/lib/mysql` on the `docker run` command
# Once built, do e.g. `docker run your_image /path/to/docker-mysql-initialize.sh`
# Again, make sure MySQL is persisting data outside the container for this to have any effect.

set -e
set -x

mysql_install_db

# Start the MySQL daemon in the background.
/usr/sbin/mysqld &
mysql_pid=$!

until mysqladmin ping >/dev/null 2>&1; do
  echo -n "."; sleep 0.2
done

# Permit root login without password from outside container.
mysql -e "GRANT ALL ON *.* TO root@'%' IDENTIFIED BY '' WITH GRANT OPTION"

# create the default database from the ADDed file.
mysql < /tmp/epcis_schema.sql

# Tell the MySQL daemon to shutdown.
mysqladmin shutdown

# Wait for the MySQL daemon to exit.
wait $mysql_pid

# create a tar file with the database as it currently exists
tar czvf default_mysql.tar.gz /var/lib/mysql

# the tarfile contains the initialized state of the database.
# when the container is started, if the database is empty (/var/lib/mysql)
# then it is unpacked from default_mysql.tar.gz from
# the ENTRYPOINT /tmp/run_db script

(এই স্ক্রিপ্টটির বেশিরভাগটি এখান থেকে তুলে নেওয়া হয়েছে: https://gist.github.com/pda/9697520 )

আমি তৈরি ফাইল / রান_ডিবি স্ক্রিপ্ট এখানে:

# start db

set -e
set -x

# first, if the /var/lib/mysql directory is empty, unpack it from our predefined db
[ "$(ls -A /var/lib/mysql)" ] && echo "Running with existing database in /var/lib/mysql" || ( echo 'Populate initial db'; tar xpzvf default_mysql.tar.gz )

/usr/sbin/mysqld

অবশেষে, ডকফাইফাইল তাদের সমস্তকে আবদ্ধ করার জন্য:

FROM mysql
MAINTAINER  (me) <email>

# Copy the database schema to the /data directory
ADD files/run_db files/init_db files/epcis_schema.sql /tmp/

# init_db will create the default
# database from epcis_schema.sql, then
# stop mysqld, and finally copy the /var/lib/mysql directory
# to default_mysql_db.tar.gz
RUN /tmp/init_db

# run_db starts mysqld, but first it checks
# to see if the /var/lib/mysql directory is empty, if
# it is it is seeded with default_mysql_db.tar.gz before
# the mysql is fired up

ENTRYPOINT "/tmp/run_db"

সুতরাং, আমি আমার এমডিআর ডিরেক্টরিতে সিডি করেছি (যা ফাইল ডিরেক্টরি সহ ডকফায়াইল রয়েছে)। আমি তখন কমান্ডটি চালাচ্ছি:

docker build --no-cache .

আপনার এইরকম আউটপুট দেখতে হবে:

Sending build context to Docker daemon 7.168 kB
Sending build context to Docker daemon 
Step 0 : FROM mysql
 ---> 461d07d927e6
Step 1 : MAINTAINER (me) <email>
 ---> Running in 963e8de55299
 ---> 2fd67c825c34
Removing intermediate container 963e8de55299
Step 2 : ADD files/run_db files/init_db files/epcis_schema.sql /tmp/
 ---> 81871189374b
Removing intermediate container 3221afd8695a
Step 3 : RUN /tmp/init_db
 ---> Running in 8dbdf74b2a79
+ mysql_install_db
2015-03-19 16:40:39 12 [Note] InnoDB: Using atomics to ref count buffer pool pages
...
/var/lib/mysql/ib_logfile0
 ---> 885ec2f1a7d5
Removing intermediate container 8dbdf74b2a79
Step 4 : ENTRYPOINT "/tmp/run_db"
 ---> Running in 717ed52ba665
 ---> 7f6d5215fe8d
Removing intermediate container 717ed52ba665
Successfully built 7f6d5215fe8d

আপনার এখন একটি চিত্র '7f6d5215fe8d' রয়েছে। আমি এই চিত্রটি চালাতে পারি:

docker run -d 7f6d5215fe8d

এবং চিত্রটি শুরু হয়, আমি একটি উদাহরণ স্ট্রিং দেখছি:

4b377ac7397ff5880bc9218abe6d7eadd49505d50efb5063d6fab796ee157bd3

আমি তখন এটি 'থামাতে' এবং পুনরায় চালু করতে পারতাম।

docker stop 4b377
docker start 4b377

আপনি যদি লগগুলিতে লক্ষ্য করেন তবে প্রথম লাইনে এটি থাকবে:

docker logs 4b377

Populate initial db
var/lib/mysql/
...

তারপরে, লগগুলির শেষে:

Running with existing database in /var/lib/mysql

এগুলি / tmp / run_db স্ক্রিপ্টের বার্তাগুলি, প্রথমটি ইঙ্গিত করে যে ডাটাবেসটি সেভ করা (প্রাথমিক) সংস্করণ থেকে প্যাক করা হয়েছিল, দ্বিতীয়টি নির্দেশ করে যে ডাটাবেস ইতিমধ্যে ছিল, সুতরাং বিদ্যমান অনুলিপিটি ব্যবহৃত হয়েছিল।

আমি উপরে বর্ণিত ডিরেক্টরি কাঠামোর একটি ls -lR এখানে রয়েছে। মনে রাখবেন যে init_db এবং run_db এক্সিকিউট বিট সেট সহ স্ক্রিপ্ট রয়েছে:

gregs-air:~ gfausak$ ls -Rl mdir
total 8
-rw-r--r--  1 gfausak  wheel  534 Mar 19 11:13 Dockerfile
drwxr-xr-x  5 gfausak  staff  170 Mar 19 11:24 files

mdir/files:
total 24
-rw-r--r--  1 gfausak  staff   126 Mar 19 11:14 epcis_schema.sql
-rwxr-xr-x  1 gfausak  staff  1226 Mar 19 11:16 init_db
-rwxr-xr-x  1 gfausak  staff   284 Mar 19 11:23 run_db

3
ওহে গ্যারি, আমাকে সাহায্য করার জন্য প্রথম ধন্যবাদ। আমি আপনার নির্দেশাবলী অনুসরণ করেছি, কিন্তু যখন আমি ডকার বিল্ড - না-ক্যাশে সম্পাদন করি। , আমার init_dbস্ক্রিপ্টের জন্য অনুমতি ত্রুটি আছে ।
মার্কাস গমেস

আমি ইতিমধ্যে RUNকমান্ডের অনুমতি দিয়ে সমস্যাটি সমাধান করার চেষ্টা করেছি এবং স্পষ্টতই সমস্যাটি সমাধান হয়েছে। তবে তারপরে যখন আমি এক্সিকিউট docker runকরি তখন run_dbস্ক্রিপ্ট নিয়ে আমার একই সমস্যা হয় ।
মার্কাস গমেস

1
init_db এবং run_db প্রয়োজন 0755 অনুমতি হতে (তারা করছে স্ক্রিপ্ট, তারা চালানো বিট সেট থাকতে হবে + X init_db run_db একটি chmod করবেন না।
গ্রেগ

আমি ডিরেক্টরি আপডেট করে প্রতিটি ফাইলের অনুমতি দেখিয়ে উত্তর আপডেট করেছি। দ্রষ্টব্য: chmod + x ফাইল / * _ db প্রয়োজনীয় অনুমতিগুলি সম্পন্ন করবে।
গ্রেগ

2
@ গ্রেগ আমি উপরের পদক্ষেপগুলি চেষ্টা করেছি তবে আমি একটি ত্রুটি পাচ্ছি ([ERROR] মারাত্মক ত্রুটি: দয়া করে কীভাবে mysqld কে রুট হিসাবে চালানো যায় তা জানতে ম্যানুয়ালটির "সুরক্ষা" বিভাগটি পড়ুন!)) কোনও পরামর্শ ?
বিনিশ জন

121

আমার এই একই সমস্যাটি ছিল যেখানে আমি আমার মাইএসকিউএল ডকার উদাহরণটির স্কিমা শুরু করতে চেয়েছিলাম, তবে কিছু গুগলিং করার পরে এবং অন্যের উদাহরণ অনুসরণ করার পরে আমি এই কাজটি করতে অসুবিধে হয়েছিলাম। আমি কীভাবে এটি সমাধান করেছি তা এখানে।

1) আপনার মাইএসকিউএল স্কিমাটি কোনও ফাইলে ডাম্প করুন।

mysqldump -h <your_mysql_host> -u <user_name> -p --no-data <schema_name> > schema.sql

2) /docker-entrypoint-initdb.dডকার পাত্রে ডিরেক্টরিতে আপনার স্কিমা ফাইল যুক্ত করতে ADD কমান্ডটি ব্যবহার করুন । এই ডিরেক্টরিটিতে docker-entrypoint.shফাইলটি ".sql"মাইএসকিউএল ডাটাবেসের বিপরীতে শেষ হবে run

Dockerfile:

FROM mysql:5.7.15

MAINTAINER me

ENV MYSQL_DATABASE=<schema_name> \
    MYSQL_ROOT_PASSWORD=<password>

ADD schema.sql /docker-entrypoint-initdb.d

EXPOSE 3306

3) ডকার মাইএসকিউএল উদাহরণটি শুরু করুন।

docker-compose build
docker-compose up

ধন্যবাদ মাইএসকিউএল সেট আপ হচ্ছে এবং Dockerfile মধ্যে ডাম্প আমদানি আমাকে docker-entrypoint.sh এবং যে এটি উভয় এসকিউএল এবং শেল স্ক্রিপ্ট রান সালে clueing জন্য!


2
এটি অবশ্যই ভাল উত্তর। DDLs এবং ইনিশিয়ালাইজেশন স্ক্রিপ্টগুলি /docker-entryPoint-initdb.d ডিরেক্টরিতে অনুলিপি করা হ'ল ডকারহাব মাইএসকিএল ডকস এই জাতীয় জিনিসগুলির সাথে কি করতে বলে।
অনুরাগী 2

2
কিছু পরিবর্তন হলে কী হয় schema.sql? আমি চাই আমার ডিবি সেই অনুযায়ী আপডেট করা হোক। এছাড়াও আমি যখন দ্বিতীয়বার এই ধারকটি তৈরি করব তখন কী ঘটবে? ডিবি ধ্বংস হয়ে আবার তৈরি হবে?
গোগা কোরেলি

1
@ গোগা কোরেলি ডকার কেবল তখনই এই আরআর কমান্ডটি চালান যদি / var / lib /
mysql- তে মেডিকেল

38

এখানে পূর্বে সার্ভারাল প্রতিক্রিয়াগুলির একীভূতকরণের ভিত্তিতে অন্য উপায়:

ডকার-রচনা ফাইল:

version: "3"
services:
    db:
      container_name: db
      image: mysql
      ports:
       - "3306:3306"  
      environment:
         - MYSQL_ROOT_PASSWORD=mysql
         - MYSQL_DATABASE=db

      volumes:
         - /home/user/db/mysql/data:/var/lib/mysql
         - /home/user/db/mysql/init:/docker-entrypoint-initdb.d/:ro

যেখানে /home/user.. হোস্টে ভাগ করা ফোল্ডার

এবং /home/user/db/mysql/initফোল্ডারে .. কেবল একটি নামের সাথে একটি স্কয়ার ফাইল ফেলে দিন, উদাহরণস্বরূপ init.sql:

CREATE DATABASE mydb;
GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'%' IDENTIFIED BY 'mysql';
GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'localhost' IDENTIFIED BY 'mysql';
USE mydb
CREATE TABLE CONTACTS (
    [ ... ]
);
INSERT INTO CONTACTS VALUES ...
[ ... ]

অফিসিয়াল মাইএসকিএল ডকুমেন্টেশন অনুসারে , আপনি একাধিক স্কলএল ফাইল এতে রেখে দিতে পারেন docker-entrypoint-initdb.d, তারা বর্ণানুক্রমিকভাবে কার্যকর করা হয়


28

অন্যান্য সহজ উপায়, নিম্নলিখিত লাইনগুলির সাথে ডকার-রচনা ব্যবহার করুন:

mysql:
  from: mysql:5.7
  volumes:
    - ./database:/tmp/database
  command: mysqld --init-file="/tmp/database/install_db.sql"

আপনার ডাটাবেস স্কিমা। / ডেটাবেস / ইনস্টল_ডিবি.এসকিএল-তে রাখুন। প্রতিবার আপনি যখন আপনার ধারক তৈরি করবেন, ইনস্টল_ডিব.এসকিউএল কার্যকর হবে।


26

আমি গ্রেগের উত্তরটি শূন্য সাফল্যের সাথে চেষ্টা করেছি, আমার অবশ্যই অবশ্যই কিছু ভুল করে ফেলেছি যেহেতু আমার ডাটাবেসে সমস্ত পদক্ষেপের পরেও কোনও ডেটা ছিল না: আমি মারিয়াডিবির সর্বশেষ চিত্রটি ব্যবহার করছি, সেক্ষেত্রেই।

তারপরে আমি অফিসিয়াল মারিয়াডিবি চিত্রটির প্রবেশ প্রবেশদ্বারটি পড়ার সিদ্ধান্ত নিয়েছি এবং এটি একটি সাধারণ ডকার-রচনা ফাইল তৈরি করতে ব্যবহার করেছি :

database:
  image: mariadb
  ports:
     - 3306:3306
  expose:
     - 3306
  volumes:
     - ./docker/mariadb/data:/var/lib/mysql:rw
     - ./database/schema.sql:/docker-entrypoint-initdb.d/schema.sql:ro
  environment:
     MYSQL_ALLOW_EMPTY_PASSWORD: "yes"

এখন আমি আমার ডেটা অবিরত রাখতে এবং নিজের স্কিমা দিয়ে একটি ডেটাবেস তৈরি করতে সক্ষম!


1
হাই, আমিও একই চেষ্টা করছি, তবে স্ক্রিপ্ট কখনই কার্যকর হয় না। অন্য কোনও প্যারামিটার সরবরাহ করার প্রয়োজন আছে? আমি এই ভলিউমটি মারিয়্যাডবি -। / ডেটাবেস / স্কেমমা.এসকিএল: / ডকার-এন্ট্রি পয়েন্ট- ইনিটডিবি.ডে / স্কেমা.এসকিএল: এর জন্য যুক্ত করেছি। ধন্যবাদ
বিলাক

দ্রষ্টব্য: স্ক্রিপ্টটি একবার ধারক ইনিশিয়ালেশনের সময় একবার কার্যকর করা হবে। আপনি যদি পরে কোনও নতুন স্ক্রিপ্ট যুক্ত করেন তবে এটি কার্যকর হয় না।
ALex_hha

23

4 আগস্ট, 2015 এর পরে, আপনি যদি অফিশিয়াল মাইএসকিএল ডকার ইমেজ ব্যবহার করছেন তবে আপনি কেবল একটি ফাইলকে / ডকার-এন্ট্রিপয়েন্ট-ইনিটডিবি.ডি / ডিরেক্টরিতে যুক্ত করতে পারেন এবং এটি ধারকটি দিয়ে শুরু হয়ে যাবে initial গিথুব দেখুন: https://github.com/docker-library/mysql/commit/14f165596ea8808dfeb2131f092aabe61c967225 আপনি যদি অন্য ধারক চিত্রগুলিতে এটি প্রয়োগ করতে চান তবে


1
এটি অফিসিয়াল ডকার এমএসকিউএল চিত্রের বর্তমান সংস্করণগুলির সঠিক উত্তর।
NAN

11

সবচেয়ে সহজ সমাধান হ'ল টুটুম / মাইএসকিএল ব্যবহার করা

ধাপ 1

docker pull tutum/mysql:5.5

ধাপ ২

docker run -d -p 3306:3306 -v /tmp:/tmp  -e STARTUP_SQL="/tmp/to_be_imported.mysql" tutum/mysql:5.5

ধাপ 3

CONTAINER_ID এর উপরে উঠুন এবং তারপরে docker logsউত্পন্ন পাসওয়ার্ডের তথ্য দেখতে আদেশটি কার্যকর করুন।

docker logs #<CONTAINER_ID>

আপনি কি সফলভাবে চালানোর জন্য এটি অর্জন করেছেন? আমি কয়েক সপ্তাহ ধরে কোনও সাফল্য ছাড়াই টুটম / মাইএসকিএল দিয়ে ফিড করছি।
Iammesol

2
হ্যাঁ. আমি ব্যবহার করি tutum/mysql:5.5এবং এটি সফল হয়েছিল। docker run -d -p 3306:3306 -v /tmp:/tmp -e MYSQL_PASS="admin" -e STARTUP_SQL="/tmp/mysqldump.mysql" tutum/mysql:5.5। আপনি docker logs CONTAINER_IDযদি সমস্যাগুলি পূরণ করেন তবে সর্বদা ত্রুটি বার্তাগুলি দেখতে কমান্ড কার্যকর করতে পারেন।
মেইনফ্রেমার

পথটি কোথা /tmp/to_be_imported.mysqlথেকে আসছে তা আমি বুঝতে পারি না । এটি কি হোস্ট ওএসের পথ? একটি COPYবা ADDকনটেইনার ফাইল সিস্টেমে জিনিস রাখা যেখানে ?
রেন্ডি এল

@ যে আপনার প্রয়োজন নেই @ কারণ / টিএমপি হোস্ট ডিরেক্টরিটি ধারকটির COPY/ টিএমপি ADDমাউন্ট করা হয়েছে। কমান্ডটি নিবিড়ভাবে দেখুন অংশ আছে -v /tmp:/tmp। ব্যক্তিগতভাবে আমি কেবল ফাইলটি ধারকটিতে উপলব্ধ করার জন্য কোনও ভলিউম মাউন্ট করব না তবে আমার ধারণা এটি ব্যক্তিগত পছন্দ।
উইলা

1
পরিষ্কার করা, আপনি নন-অফিশিয়াল ইমেজ ব্যবহার করা উচিত নয়, যদি না আপনি চান এই আবার ঘটতে।
ড্রাগস

3

আমার মতো এন্ট্রিপয়েন্ট স্ক্রিপ্টটি তৈরি করতে চান না তাদের জন্য আপনি বিল্ড-টাইমে মাইএসকিএলডি শুরু করতে পারেন এবং তারপরে আপনার ডকফাইফিলের মধ্যে মাইএসকিএল কমান্ডগুলি কার্যকর করতে পারেন:

RUN mysqld_safe & until mysqladmin ping; do sleep 1; done && \
    mysql -uroot -e "CREATE DATABASE somedb;" && \
    mysql -uroot -e "CREATE USER 'someuser'@'localhost' IDENTIFIED BY 'somepassword';" && \
    mysql -uroot -e "GRANT ALL PRIVILEGES ON somedb.* TO 'someuser'@'localhost';"

এখানে মূল কীটি হ'ল mysqld_safe একক &চিহ্ন সহ পটভূমিতে প্রেরণ করুন।


1

নীচে ডকফাইফাইলটি আমি সফলভাবে এক্সএএমপিপি ইনস্টল করতে, স্কিম সহ একটি মারিয়াডিবি তৈরি করতে এবং স্থানীয় সার্ভারে ব্যবহৃত তথ্যের সাথে প্রাক জনসংখ্যার (usrs, pics অর্ডার, ইত্যাদি) ব্যবহার করতে সক্ষম হয়েছি is

FROM ubuntu:14.04

COPY Ecommerce.sql /root

RUN apt-get update \
 && apt-get install wget -yq \
 && apt-get install nano \
 && wget https://www.apachefriends.org/xampp-files/7.1.11/xampp-linux-x64-7.1.11-0-installer.run \
 && mv xampp-linux-x64-7.1.11-0-installer.run /opt/ \
 && cd /opt/ \
 && chmod +x xampp-linux-x64-7.1.11-0-installer.run \
 && printf 'y\n\y\n\r\n\y\n\r\n' | ./xampp-linux-x64-7.1.11-0-installer.run \
 && cd /opt/lampp/bin \
 && /opt/lampp/lampp start \
 && sleep 5s \

 && ./mysql -uroot -e "CREATE DATABASE Ecommerce" \
 && ./mysql -uroot -D Ecommerce < /root/Ecommerce.sql \
 && cd / \
 && /opt/lampp/lampp reload \
 && mkdir opt/lampp/htdocs/Ecommerce

COPY /Ecommerce /opt/lampp/htdocs/Ecommerce

EXPOSE 80

0

এটির সাথে কিছুটা লড়াই করার পরে, নামকৃত ভলিউম (ডিবি-ডেটা) ব্যবহার করে ডকফরফিল একবার দেখুন। এটি চূড়ান্ত অংশে একটি প্লাস ঘোষণা গুরুত্বপূর্ণ, যেখানে আমি উল্লেখ করেছি যে ভলিউম[external]

সবাই এইভাবে দুর্দান্ত কাজ করেছে!

version: "3"

services:

  database:
    image: mysql:5.7
    container_name: mysql
    ports:
      - "3306:3306"
    volumes:
      - db-data:/docker-entrypoint-initdb.d
    environment:
      - MYSQL_DATABASE=sample
      - MYSQL_ROOT_PASSWORD=root

volumes:
  db-data:
    external: true
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.