docker基于Dockerfile构建monogdb服务镜像

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker基于Dockerfile构建monogdb服务镜像相关的知识,希望对你有一定的参考价值。

① 查看内容,包括写好的Dockerfile和若干脚本等。

从GitHub Dockerpool社区账户下载Mongodb镜像项目:

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

[[email protected] Mongodb]# ls

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


其中Dockerfile内容为:

[[email protected] 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"]

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

[[email protected] 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

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

[[email protected] 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服务镜像的主要内容,如果未能解决你的问题,请参考以下文章

docker基于Dockerfile构建monogdb服务镜像

Docker -- 自定义镜像(Dockerfile)基于Ubuntu镜像构建一个新镜像基于java:8-alpine镜像将一个Java项目构建为镜像

DockerFile + Docker-Compose

Docker:Dockerfile自定义镜像

Docker 实战—使用 Dockerfile 构建镜像

Docker--构建镜像私有仓库registry数据卷端口映射