日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Docker-compose配置Mysql,Redis,MongoDB

發(fā)布時(shí)間:2023/12/10 数据库 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Docker-compose配置Mysql,Redis,MongoDB 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Docker-compose下配置Mysql,Redis,MongoDB詳解

  • 一、docker-compose簡介
  • 二、構(gòu)建一個(gè)實(shí)例項(xiàng)目
    • 1.前后端實(shí)現(xiàn)
    • 2.Dockerfile及docker-compose.yml
    • 3. 生成鏡像
  • 三、實(shí)例程序源碼

一、docker-compose簡介

Compose是用于定義和運(yùn)行多容器Docker應(yīng)用程序的工具。通過Compose,您可以使用YAML文件來配置應(yīng)用程序的服務(wù)。然后,使用一個(gè)命令,就可以從配置中創(chuàng)建并啟動(dòng)所有服務(wù)。
使用Compose基本上是一個(gè)三步過程:

  • 使用Dockerfile定義你的應(yīng)用環(huán)境,以便可以在任何地方復(fù)制它。
  • 用docker-compose.yml定義組成應(yīng)用程序的服務(wù), 以便它們可以在隔離的環(huán)境中一起運(yùn)行。
    docker-compose.yml主要結(jié)構(gòu):
  • ①. version: #版本 ②. services: #服務(wù)redis: #服務(wù)一depends_on: #依賴于哪個(gè)服務(wù),它會(huì)在依賴的服務(wù)啟動(dòng)之后再啟動(dòng)image:build:network:volumes:redis: #服務(wù)二web: #服務(wù)三 ③. 其他設(shè)置(網(wǎng)絡(luò)卷、全局規(guī)則)volumes:networks:configs:
  • 運(yùn)行docker compose up或docker compose up -d(后臺(tái)運(yùn)行)運(yùn)行您的整個(gè)應(yīng)用程序。
    注意:每次修改任一配置文件后,都要使用 docker-compose up --build 重新構(gòu)建
    總結(jié):有了docker-compose,當(dāng)我們想啟動(dòng)多個(gè)服務(wù)時(shí),無需再一個(gè)一個(gè)進(jìn)行docker run操作,而只需要編寫docker-compose.yml配置文件,即可一次運(yùn)行你的全部服務(wù)。
  • 二、構(gòu)建一個(gè)實(shí)例項(xiàng)目

    這里給出的實(shí)例,Web框架使用Spring-boot,并同時(shí)使用Mysql,Redis,MongoDB這三個(gè)現(xiàn)在最常見的數(shù)據(jù)庫,對其進(jìn)行簡單的計(jì)數(shù)操作。(即每訪問一次網(wǎng)頁,三個(gè)庫中的計(jì)數(shù)器分別加一)

    1.前后端實(shí)現(xiàn)

    //實(shí)現(xiàn)每次點(diǎn)擊網(wǎng)頁,對各個(gè)數(shù)據(jù)庫進(jìn)行累加,并返回當(dāng)前的計(jì)數(shù)器記錄的數(shù)值。 @RequestMapping("/")public String home(Model model){int bef1 = mysqlMapper.selectMysql();mysqlMapper.changeMysql();int res1 = mysqlMapper.selectMysql();model.addAttribute("mysqlbef", bef1);model.addAttribute("mysqlres", res1);model.addAttribute("redisres", redisTemplate.opsForValue().increment("age"));Query query = new Query(Criteria.where("name").is("5yw"));List<Map> list = mongoTemplate.find(query, Map.class, "hellomongodb");int bef3 = (int) list.get(0).get("age");//****************************************************************************************************Update update = new Update();update.set("age", bef3 + 1);mongoTemplate.updateFirst(query, update, "hellomongodb");//****************************************************************************************************List<Map> list1 = mongoTemplate.find(query, Map.class, "hellomongodb");int res3 = (int) list1.get(0).get("age");model.addAttribute("mongobef", bef3);model.addAttribute("mongores", res3);return "Page/home.html";} <!-- 前端接收后端傳遞的參數(shù)并顯示 --> <span id="mysql"></span> <hr> <span id="redis"></span> <hr> <span id="mongo"></span> </body> <script>var message1 = "Mysql更新后:" +[[${mysqlres}]];var message2 = "Redis更新后:" +[[${redisres}]];var message3 = "Mongo更新后:" +[[${mongores}]];document.getElementById("mysql").textContent = message1;document.getElementById("redis").textContent = message2;document.getElementById("mongo").textContent = message3; </script>

    2.Dockerfile及docker-compose.yml

    Dockerfile將我們Springboot打包的jar包,裝配成為docker的鏡像,以在docker中運(yùn)行。

    # Docker image for springboot file run # VERSION 0.0.1 # Author: eangulee # 基礎(chǔ)鏡像使用java FROM java:8 # 作者 MAINTAINER 5yw <w1596253661@gmail.com> # 將jar包添加到容器中并更名為app.jar ADD dockerweb-0.0.1-SNAPSHOT.jar app.jar # 運(yùn)行jar包 ENTRYPOINT ["java","-jar","/app.jar"]

    docker-compose.yml是docker-compose的核心配置文件,docker將會(huì)根據(jù)這個(gè)配置文件進(jìn)行鏡像的構(gòu)建以及運(yùn)行,在類似于我們這類需要啟用多個(gè)鏡像(web,mysql,redis,mongo)的項(xiàng)目,docker-compose減少了我們很多的工作量。(即我們無需對每個(gè)鏡像依次進(jìn)行run操作)

    version: '3.8' services:dockerweb:build: .depends_on: # 使web項(xiàng)目在數(shù)據(jù)庫均運(yùn)行之后再運(yùn)行- mysql- redis- mongoports:- 8000:8000 # 配置端口映射(主機(jī)端口:容器端口)mysql:image: 'mysql'environment:MYSQL_ROOT_PASSWORD: 123456 # 配置Mysql密碼MYSQL_USER: rootMYSQL_PASS: 123456container_name: "mysql"restart: alwaysports:- 3306:3306volumes: # 卷掛載- /home/ostrich5yw/Desktop/DockerCompose/mysql/db:/var/lib/mysql- /home/ostrich5yw/Desktop/DockerCompose/mysql/log:/var/log/mysql- /home/ostrich5yw/Desktop/DockerCompose/mysql/conf/my.cnf:/etc/mysql/mysql.conf.d/mysqld.cnfredis:image: 'redis'container_name: "redis"restart: alwaysvolumes:- /home/ostrich5yw/Desktop/DockerCompose/redis/data:/data # 主機(jī)路徑:容器路徑- /home/ostrich5yw/Desktop/DockerCompose/redis/redis.conf:/etc/redis/redis.confmongo:image: 'mongo'environment:MONGO_INITDB_ROOT_USERNAME: rootMONGO_INITDB_ROOT_PASSWORD: 123456container_name: "mongo"restart: alwaysvolumes:- /home/ostrich5yw/Desktop/DockerCompose/mongo/db:/data/db- /home/ostrich5yw/Desktop/DockerCompose/mongo/log:/data/logsports:- 27017:27017

    尤其要注意這里的service名稱(例如dockerweb),這里的名稱,docker-compose會(huì)將他們對應(yīng)成相應(yīng)的域名。
    例如我們?nèi)绻L問mysql,一般是192.168.0.xxx:3306,而當(dāng)我們有域名時(shí),只需要寫為mysql:3306即可
    在有多個(gè)服務(wù)時(shí),比如Mysql1在192.168.0.1,Mysql2在192.168.0.2,我們只需要寫為mysql:3306而無需指定IP。

    3. 生成鏡像

    我們將編寫的docker-compose.yml,Dockerfile以及導(dǎo)出的jar包放入同一文件夾,并建立配置文件中描述的三個(gè)掛載文件夾。

    我們運(yùn)行docker-compose up運(yùn)行鏡像。
    項(xiàng)目運(yùn)行后,我們需要為Mysql與MongoDB導(dǎo)入初始數(shù)據(jù)。

    docker exec -it mysql /bin/bash 進(jìn)入Mysql鏡像

    • mysql -uroot -p 123456
    • create database test;
    • use test;
    • CREATE TABLE hellomysql (
      name varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
      age int(11) NULL DEFAULT NULL
      ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
    • INSERT INTO hellomysql VALUES (‘5yw’, 0);

    docker exec -it mongo /bin/bash 進(jìn)入MongoDB鏡像

    • mongo 127.0.0.1:27017/admin -u root -p 123456
    • use test;
    • db.createCollection(“hellomongodb”)
    • db.getCollection(“hellomongodb”).insert( {
      _id: ObjectId(“5feac4fba4de87481cd2139b”),
      name: “5yw”,
      age: NumberInt(“0”)
      } );
    • exit

    通過另一個(gè)窗口,輸入curl localhost:8000查看結(jié)果。

    三、實(shí)例程序源碼

    https://gitee.com/Ostrich5ywtt/dockerweb

    總結(jié)

    以上是生活随笔為你收集整理的Docker-compose配置Mysql,Redis,MongoDB的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。