1. 程式人生 > >【docker】基於Dockerfile構建monogdb服務鏡像

【docker】基於Dockerfile構建monogdb服務鏡像

monogdb服務鏡像

① 查看內容,包括寫好的Dockerfile和若幹腳本等。

從GitHub Dockerpool社區賬戶下載Mongodb鏡像項目:

git clone https://github.com/DockerPool/Mongodb.git 並修改文件

[root@docker1 Mongodb]# ls

Dockerfile mongodb-3.2.repo mongodb-linux-x86_64-rhel70-3.6.0.tgz run.sh set_mongodb_password.sh


其中Dockerfile內容為:

[root@docker1 Mongodb]# vi Dockerfile

#設置從我們之前創建的sshd鏡像繼承

FROM sshd:centos


MAINTAINER waitfish from dockerpool.com


ADD mongodb-3.2.repo /etc/yum.repos.d/


RUN \

yum update -y && \

yum install -y mongodb-org && \ #這裏不推薦使用yum安裝monodb,實在下載速度太慢

yum clean all


# 創建mongodb存放數據文件的文件夾

RUN mkdir -p /data/db

VOLUME /data/db


ENV AUTH yes


# Add run scripts 添加腳本

ADD run.sh /run.sh

ADD set_mongodb_password.sh /set_mongodb_password.sh

RUN chmod 755 ./*.sh


EXPOSE 27017

EXPOSE 28017


CMD ["/run.sh"]

————————————————————————————————————————————————

[root@docker1 Mongodb]# cat run.sh

#!/bin/bash

if [ ! -f /.mongodb_password_set ]; then

/set_mongodb_password.sh

fi


if [ "$AUTH" == "yes" ]; then

export mongodb='/usr/bin/mongod --nojournal --auth --httpinterface --rest'

else

export mongodb='/usr/bin/mongod --nojournal --httpinterface --rest'

fi


if [ ! -f /data/db/mongod.lock ]; then

eval $mongodb

else

export mongodb=$mongodb' --dbpath /data/db'

rm /data/db/mongod.lock

mongod --dbpath /data/db --repair && eval $mongodb

fi

——————————————————————————————————————————————————

[root@docker1 Mongodb]# cat set_mongodb_password.sh

#!/bin/bash


if [ -f /.mongodb_password_set ]; then

echo "MongoDB password already set!"

exit 0

fi


/usr/bin/mongod --smallfiles --nojournal &


PASS=${MONGODB_PASS:-$(pwgen -s 12 1)}

_word=$( [ ${MONGODB_PASS} ] && echo "preset" || echo "random" )


RET=1

while [[ RET -ne 0 ]]; do

echo "=> Waiting for confirmation of MongoDB service startup"

sleep 5

mongo admin --eval "help" >/dev/null 2>&1

RET=$?

done


echo "=> Creating an admin user with a ${_word} password in MongoDB"

mongo admin --eval "db.addUser({user: 'admin', pwd: '$PASS', roles: [ 'userAdminAnyDatabase', 'dbAdminAnyDatabase' ]});"

mongo admin --eval "db.shutdownServer();"


echo "=> Done!"

touch /.mongodb_password_set


echo "========================================================================"

echo "You can now connect to this MongoDB server using:"

echo ""

echo " mongo admin -u admin -p $PASS --host <host> --port <port>"

echo ""

echo "Please remember to change the above password as soon as possible!"

echo "========================================================================"
















①②③④⑤⑥⑦⑧⑨⑩








【docker】基於Dockerfile構建monogdb服務鏡像