* হালনাগাদ *
আমি কিছু কমান্ড চালানোর সর্বোত্তম উপায়টি আবিষ্কার করেছি হ'ল একটি কাস্টম ডকফেরফিল লিখুন যা ছবিটি থেকে অফিসিয়াল সিএমডি চালানোর আগে যা করতে চাই তার সবকিছু করে।
Docker-compose.yaml:
version: '3'
# Can be used as an alternative to VBox/Vagrant
services:
mongo:
container_name: mongo
image: mongo
build:
context: .
dockerfile: deploy/local/Dockerfile.mongo
ports:
- "27017:27017"
volumes:
- ../.data/mongodb:/data/db
Dockerfile.mongo:
FROM mongo:3.2.12
RUN mkdir -p /fixtures
COPY ./fixtures /fixtures
RUN (mongod --fork --syslog && \
mongoimport --db wcm-local --collection clients --file /fixtures/clients.json && \
mongoimport --db wcm-local --collection configs --file /fixtures/configs.json && \
mongoimport --db wcm-local --collection content --file /fixtures/content.json && \
mongoimport --db wcm-local --collection licenses --file /fixtures/licenses.json && \
mongoimport --db wcm-local --collection lists --file /fixtures/lists.json && \
mongoimport --db wcm-local --collection properties --file /fixtures/properties.json && \
mongoimport --db wcm-local --collection videos --file /fixtures/videos.json)
এটি সম্ভবত এটি করার সবচেয়ে পরিষ্কার উপায়।
* পুরানো উপায় *
আমি আমার কমান্ডগুলি দিয়ে একটি শেল স্ক্রিপ্ট তৈরি করেছি। এই ক্ষেত্রে আমি শুরু করতে চেয়েছিলাম mongod
, এবং চালাতে চাইছি mongoimport
তবে mongod
আপনাকে বাকিগুলি চালানো থেকে বিরত রাখতে হবে।
ডকার-কমপোজ.আইএমএল :
version: '3'
services:
mongo:
container_name: mongo
image: mongo:3.2.12
ports:
- "27017:27017"
volumes:
- ./fixtures:/fixtures
- ./deploy:/deploy
- ../.data/mongodb:/data/db
command: sh /deploy/local/start_mongod.sh
start_mongod.sh :
mongod --fork --syslog && \
mongoimport --db wcm-local --collection clients --file /fixtures/clients.json && \
mongoimport --db wcm-local --collection configs --file /fixtures/configs.json && \
mongoimport --db wcm-local --collection content --file /fixtures/content.json && \
mongoimport --db wcm-local --collection licenses --file /fixtures/licenses.json && \
mongoimport --db wcm-local --collection lists --file /fixtures/lists.json && \
mongoimport --db wcm-local --collection properties --file /fixtures/properties.json && \
mongoimport --db wcm-local --collection videos --file /fixtures/videos.json && \
pkill -f mongod && \
sleep 2 && \
mongod
সুতরাং এটি মঙ্গো কাঁটাচামচ করে, মনোগিম্পোর্ট করে এবং তারপরে কাঁটাযুক্ত মঙ্গোকে বিচ্ছিন্ন করে মেরে ফেলে, এবং এটি বিচ্ছিন্ন না করে আবার শুরু করে। কোনও কাঁটাযুক্ত প্রক্রিয়া সংযুক্ত করার উপায় আছে কিনা তা নিশ্চিত নয় তবে এটি কাজ করে।
দ্রষ্টব্য: আপনি যদি কিছু প্রাথমিক ডিবি ডেটা কঠোরভাবে লোড করতে চান তবে এটি করার উপায় এটি:
mongo_import.sh
#!/bin/bash
# Import from fixtures
# Used in build and docker-compose mongo (different dirs)
DIRECTORY=../deploy/local/mongo_fixtures
if [[ -d "/fixtures" ]]; then
DIRECTORY=/fixtures
fi
echo ${DIRECTORY}
mongoimport --db wcm-local --collection clients --file ${DIRECTORY}/clients.json && \
mongoimport --db wcm-local --collection configs --file ${DIRECTORY}/configs.json && \
mongoimport --db wcm-local --collection content --file ${DIRECTORY}/content.json && \
mongoimport --db wcm-local --collection licenses --file ${DIRECTORY}/licenses.json && \
mongoimport --db wcm-local --collection lists --file ${DIRECTORY}/lists.json && \
mongoimport --db wcm-local --collection properties --file ${DIRECTORY}/properties.json && \
mongoimport --db wcm-local --collection videos --file ${DIRECTORY}/videos.json
mongo_fixtures / *। json ফাইলগুলি mongoexport কমান্ডের মাধ্যমে তৈরি করা হয়েছিল।
Docker-compose.yaml
version: '3'
services:
mongo:
container_name: mongo
image: mongo:3.2.12
ports:
- "27017:27017"
volumes:
- mongo-data:/data/db:cached
- ./deploy/local/mongo_fixtures:/fixtures
- ./deploy/local/mongo_import.sh:/docker-entrypoint-initdb.d/mongo_import.sh
volumes:
mongo-data:
driver: local
/bin/bash