国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

docker-compose mongo 啟動(dòng)mongo容器后如何執(zhí)行腳本創(chuàng)建用戶數(shù)據(jù)庫(kù)問題

這篇具有很好參考價(jià)值的文章主要介紹了docker-compose mongo 啟動(dòng)mongo容器后如何執(zhí)行腳本創(chuàng)建用戶數(shù)據(jù)庫(kù)問題。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

系統(tǒng)版本:

Docker version 20.10.7, build f0df350

docker-compose version 1.29.2, build 5becea4c

1.docker-compose文件和start.sh

環(huán)境變量:Linux下必須export聲明兩個(gè)環(huán)境變量,注意這個(gè)賬戶同時(shí)也是創(chuàng)建的數(shù)據(jù)庫(kù)的連接用戶密碼

export MONGO_INITDB_ROOT_USERNAME=<用戶名>
export MONGO_INITDB_ROOT_PASSWORD=<密碼>

目錄:/home/user/docker-compose.yml

鏡像:mongo:6.0.10

容器名:mongobss

掛載卷:data/db數(shù)據(jù)目錄  start.sh后創(chuàng)建用戶和庫(kù)的腳本

環(huán)境變量:定義初始的mongo root角色用戶

privileged:給予容器高權(quán)限

version: '3'
services:
  mongodb:
    image: mongo:6.0.10
    container_name: mongobss
    ports:
        - 27017:27017
    privileged: true
    volumes:
        - "./data/db:data/db"
        - "./start.sh:/docker-entrypoint-initdb.d/start.sh"  #這里是關(guān)鍵點(diǎn)涉及到mongo官方打包鏡像時(shí)定義的sh啟動(dòng)文件在3中講解
    environment:
      - MONGO_INITDB_ROOT_USERNAME=${MONGO_INITDB_ROOT_USERNAME}
      - MONGO_INITDB_ROOT_PASSWORD=${MONGO_INITDB_ROOT_PASSWORD}
    tty: true

?文章來源地址http://www.zghlxwxcb.cn/news/detail-760193.html

目錄:/home/user/start.sh

set -e:遇到錯(cuò)誤shell不退出

mongosh:mongo高版本的命令行工具替代了原有的mongo,該腳本使用mongosh創(chuàng)建了初始的用戶和庫(kù)

#!/bin/bash
set -e
echo "Creating database: <庫(kù)名>"
mongosh --username ${MONGO_INITDB_ROOT_USERNAME} --password ${MONGO_INITDB_ROOT_PASSWORD}  <<EOF
use admin
use <庫(kù)名>
db.createUser({
  user:  "${MONGO_INITDB_ROOT_USERNAME}",
  pwd: "${MONGO_INITDB_ROOT_PASSWORD}",
  roles: [{ role: "readWrite", db: "<庫(kù)名>" }]
})
EOF

2.啟動(dòng)容器:

目錄:/home/user

命令:

cd /home/user
export 用戶變量
export 密碼變量
//能聯(lián)網(wǎng)
docker pull mongo:6.0.10
//內(nèi)網(wǎng)環(huán)境
//需要mongo 6.0.10的鏡像tar, 一半網(wǎng)上找不到,可以在vmware中pull一個(gè)下來執(zhí)行 docker save -o mongo.tar <鏡像ID> 可以保存為tar包再上傳到內(nèi)網(wǎng)服務(wù)器
docker load -i mongo.tar
docker-compose up -d 
//查看容器運(yùn)行狀態(tài),測(cè)試中初始化的時(shí)長(zhǎng)大概在40秒左右完成腳本執(zhí)行,其他服務(wù)才能連上mongo,如果有其他服務(wù)連接mongo建議發(fā)起一個(gè)sleep等待這個(gè)時(shí)間
docker ps
dcoker logs -f monogobss
//成功的日志輸出

{"t":{"$date":"2023-12-16T04:42:41.548+00:00"},"s":"I", "c":"STORAGE", "id":22262, "ctx":"initandlisten","msg":"Timestamp monitor starting"}
{"t":{"$date":"2023-12-16T04:42:41.550+00:00"},"s":"I", "c":"NETWORK", "id":23015, "ctx":"listener","msg":"Listening on","attr":{"address":"/tmp/mongodb-27017.sock"} }
{"t":{"$date":"2023-12-16T04:42:41.550+00:00"},"s":"I", "c":"NETWORK", "id":23015, "ctx":"listener","msg":"Listening on","attr":{"address":"0.0.0.0"}}
{"t":{"$date":"2023-12-16T04:42:41.550+00:00"},"s":"I", "c":"NETWORK", "id":23016, "ctx":"listener","msg":"Waiting for connections","attr":{"port":27017,"ssl":"off"}}
{"t":{"$date":"2023-12-16T04:42:44.816+00:00"},"s":"I", "c":"NETWORK", "id":22943, "ctx":"listener","msg":"Connection accepted","attr":{"remote":"192.168.208.3:51104","uuid":"66225b3a-525e-450c-9d2b-a97d3bf173c9","connectionId":1,"connectionCount":1}}

3.docker-entrypoint-initdb.d作用:

mongo官方ENTRYPOINT容器入口文件:

https://github.com/docker-library/mongo/blob/master/docker-entrypoint.sh

這是在mongo官方文檔查到的他們?cè)跇?gòu)建鏡像時(shí)?ENTRYPOINT 指定的容器啟動(dòng)端口文件docker-entrypoint.sh,當(dāng)docker啟動(dòng)mongo容器時(shí)mongo首先會(huì)執(zhí)行該這個(gè)腳本。

b70ce161a9f4   mongo:6.0.10   "docker-entrypoint.s…"   2 hours ago   Up 2 hours   0.0.0.0:27017->27017/tcp, :::27017->27017/tcp   mongobss

該腳本一共420行大多部分都是啟動(dòng)mongo進(jìn)程的準(zhǔn)備,主要關(guān)注的是最后幾行,for循環(huán)讀取/docker-entrypoint-initdb.d/ 該文件下的.sh .js格式腳本去執(zhí)行,如果按照常規(guī)方法使用docker-compose的command字段會(huì)替換掉ENTRYPOINT 指定的啟動(dòng)文件也就無(wú)法啟動(dòng)mongo進(jìn)程,但是采用 1 中volume掛載方式將腳本放入for指定的目錄下,就會(huì)自動(dòng)執(zhí)行。

                export MONGO_INITDB_DATABASE="${MONGO_INITDB_DATABASE:-test}"
                echo
                for f in /docker-entrypoint-initdb.d/*; do
                        case "$f" in
                                *.sh) echo "$0: running $f"; . "$f" ;;
                                *.js) echo "$0: running $f"; "${mongo[@]}" "$MONGO_INITDB_DATABASE" "$f"; echo ;;
                                *)    echo "$0: ignoring $f" ;;
                        esac
                        echo
                done

4.外部程序使用mongo:

java -jar啟動(dòng)jar包為例:

假設(shè)你的配置文件引用的是環(huán)境變量,要注意因?yàn)閙ongo容器啟動(dòng)時(shí)間較長(zhǎng)我們主程序要等待mongo容器初始化完成在發(fā)起鏈接請(qǐng)求mongo,可以在服務(wù)的啟動(dòng)文件sleep 45秒左右

[root@ config]# vi application.properties?
spring.data.mongodb.uri=${SPRING_DATA_MONGODB_URI}

?

這是docker-compose啟動(dòng)服務(wù)容器時(shí)環(huán)境變量的寫法:要注意這個(gè)compose文件有兩個(gè)容器 1 mongo的container_name=mongodb 2 jar包的應(yīng)用程序,根據(jù)docker網(wǎng)絡(luò)的特性可以直接使用hostname引用mongo 
environment:
      - SPRING_DATA_MONGODB_URI=mongodb://${MONGO_INITDB_ROOT_USERNAME}:${MONGO_INITDB_ROOT_PASSWORD}@mongodb:27017/BSStructure

?

?

?

?

?

?

?

到了這里,關(guān)于docker-compose mongo 啟動(dòng)mongo容器后如何執(zhí)行腳本創(chuàng)建用戶數(shù)據(jù)庫(kù)問題的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 使用docker-compose 搭建mongo單節(jié)點(diǎn)與副本集

    注:確認(rèn)已經(jīng)已經(jīng)關(guān)閉防火墻和selinux和已安裝docker mkdir -p /data/mongodb vim /data/mongodb/mongo.yml vim /data/mongo/start_mongodb.sh 常用命令使用文檔: https://www.runoob.com/mongodb/mongodb-tutorial.html vim /data/mongodb/mongodb.yml 2.2.1 登錄容器 2.2.2 初始化集群 2.2.2.1添加配置文件 2.2.2.2初始化副本集mongo

    2024年01月22日
    瀏覽(50)
  • 【QA】docker-compose-部署django-如何設(shè)置自動(dòng)啟動(dòng)

    使用docker-compose部署django項(xiàng)目,通常做法是: 構(gòu)建docker鏡像 運(yùn)行容器 進(jìn)入容器里面啟動(dòng)django項(xiàng)目 但是這樣不夠自動(dòng)化。 嘗試通過配置腳本的方式,讓容器啟動(dòng)的時(shí)候就啟動(dòng)django項(xiàng)目,但這樣往往使得容器一直處于重啟狀態(tài),容器無(wú)法運(yùn)行,本文主要解決這個(gè)問題 docker-com

    2024年01月23日
    瀏覽(29)
  • Docker容器:Docker-Compose

    Docker容器:Docker-Compose

    一個(gè)Dockerfile模板文件可以定義一個(gè)單獨(dú)的應(yīng)用容器,如果需要定義多個(gè)容器就需要服務(wù)編排。服務(wù)編排有很多種技術(shù)方案,今天是介紹 Docker 官方產(chǎn)品 Docker Compose 。 docker swarm(管理跨節(jié)點(diǎn))。 Dockerfile可以讓用戶管理一個(gè)單獨(dú)的應(yīng)用容器;而Compose則允許用戶在一個(gè)模板(Y

    2024年02月11日
    瀏覽(32)
  • docker筆記9:Docker-compose容器編排

    docker筆記9:Docker-compose容器編排

    目錄 1.是什么? 2.?能干嘛? 3.去哪下? 4.安裝步驟? ?編輯 5.卸載步驟? ?6.Compose核心概念 ?6.1概念 6.2 Compose常用命令? ?7.Compose編排微服務(wù) 7.1改造升級(jí)微服務(wù)工程docker_boot 7.2不用Compose 7.2.1 單獨(dú)的mysql容器實(shí)例 7.3 swagger測(cè)試 7.4上面成功了,有哪些問題? 7.5 使用Compose ?7.5.1

    2024年02月09日
    瀏覽(27)
  • docker-compose 構(gòu)建 Kafka 容器

    在終端中創(chuàng)建一個(gè)名為 kafka 的目錄,并進(jìn)入該目錄: 創(chuàng)建一個(gè)名為 docker-compose-kafka.yml 的文件并打開它。將以下代碼復(fù)制到文件中: 這份配置使用了 Docker Compose,定義了兩個(gè)服務(wù) Zookeeper 和 Kafka。 Zookeeper 服務(wù)定義: 使用 wurstmeister/zookeeper 鏡像; 將容器的 2181 端口映射到宿

    2024年02月10日
    瀏覽(24)
  • 【docker-compose】解決容器時(shí)區(qū)問題

    ????????容器內(nèi)時(shí)間比服務(wù)器慢8小時(shí) ? ? ? ? 容器時(shí)區(qū)默認(rèn) UTC 0 ??????? ?docker-compose.yaml 中設(shè)置時(shí)區(qū)

    2024年02月12日
    瀏覽(26)
  • docker-compose容器編排使用詳解+示例

    docker-compose容器編排使用詳解+示例

    Docker-Compose是Docker官方的開源項(xiàng)目,負(fù)責(zé)實(shí)現(xiàn)對(duì)Docker容器集群的快速編排。 Compose 是 Docker 公司推出的一個(gè)工具軟件,可以管理多個(gè) Docker 容器組成一個(gè)應(yīng)用。你需要定義一個(gè) YAML 格式的配置文件docker-compose.yml,寫好多個(gè)容器之間的調(diào)用關(guān)系。然后,只要一個(gè)命令,就能同時(shí)啟

    2023年04月22日
    瀏覽(34)
  • Docker容器與虛擬化技術(shù):Docker-Compose

    Docker容器與虛擬化技術(shù):Docker-Compose

    目錄 一、理論 1.Docker-Compose 二、實(shí)驗(yàn) 1.?Docker Compose 安裝部署 2.Docker?Compose撰寫nginx 鏡像 3.Docker?Compose撰寫tomcat 鏡像 三、問題 1.Docker Compose 和 Dockerfile 的區(qū)別 四、總結(jié) (1)使用場(chǎng)景 使用一個(gè)Dockerfile模板文件可以定義一個(gè)單獨(dú)的應(yīng)用容器,如果需要定義多個(gè)容器就需要服務(wù)

    2024年02月12日
    瀏覽(23)
  • 【云原生】Docker-compose單機(jī)容器集群編排

    【云原生】Docker-compose單機(jī)容器集群編排

    Compose是單機(jī)編排容器集群或者是分布式服務(wù)容器的應(yīng)用工具。通過Compose,可以使用YAML文件來配置應(yīng)用程序的服務(wù)。然后,使用一個(gè)命令,就可以從配置中創(chuàng)建并啟動(dòng)所有服務(wù)。 Docker-Compose是一個(gè)容器編排工具。通過一個(gè).yml或.yaml文件,將所有的容器的部署方法、文件映射、

    2024年02月09日
    瀏覽(30)
  • docker-compose啟動(dòng)minio

    docker-compose啟動(dòng)minio

    一、創(chuàng)建文件夾 二、docker-compose.yml 注意:新版 :RELEASE.2023-03-24T21-41-23Z 數(shù)據(jù)格式是這種 老版: RELEASE.2022-05-26T05-48-41Z 三、開啟防火墻 四、驗(yàn)證 172.50.2.40:9001

    2024年02月16日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包