[精讚] [會員登入]
347

在docker裡跑spring boot+mongo(一)

系統安裝docker ce centos7 + docker ce https://docs.docker.com/in

分享此文連結 //n.sfs.tw/14567

分享連結 在docker裡跑spring boot+mongo(一)@igogo
(文章歡迎轉載,務必尊重版權註明連結來源)
最後編修
2020-03-10 11:06:25 By igogo
 

 

系統安裝docker ce

centos7 + docker ce

 

https://docs.docker.com/install/linux/docker-ce/centos/

#yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2


#yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

#yum install docker-ce docker-ce-cli containerd.io


#systemctl start docker

#systemctl enable docker

 

Docker的歡念是一個container 一個用途,   所以本文件會建立兩個container, 一個是mongo, 一個是spring boot提供服務的web

接下來,我先拉一個 mongo 的 官方 image 回來

https://hub.docker.com/

 

docker pull mongo

 

 

建立服務

docker run -d --name mongo mongo

 

由上圖可知, 我們順利啟動了一個命名為mogo 的container

 

接下來我們利用spring boot 寫一個簡單連接mongo 並傳回rest 值的服務, 要注意的是

在連接mongo 時, 我們將container 命名為mongo, 所以在 application.properties 的mongo host 需指向 mongo

 

 

因為mongodb 的server 指向的是另一個container, 所以在編譯時需要跳過, 否則會錯誤

-Dmaven.test.skip=true

 

部份程式碼

Entity

public class Coffee {
    @Id
    public String name;

    public Integer price;

    public Coffee(String name, Integer price) {
        this.name = name;
        this.price = price;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }



    public Integer getPrice() {
        return price;
    }

    public void setPrice(Integer price) {
        this.price = price;
    }
}

 

CoffeeRepository

public interface CoffeeRepository extends MongoRepository<Coffee, String> {
}

 

IndexController

@RestController
public class Index {

    @Autowired
    CoffeeRepository coffeeRepository;

    @RequestMapping("/")
    public List<Coffee> index(){

        return coffeeRepository.findAll();
    }
}

 

Application

@SpringBootApplication
public class MongoApplication implements CommandLineRunner {


    @Autowired
    CoffeeRepository coffeeRepository;

    public static void main(String[] args) {
        SpringApplication.run(MongoApplication.class, args);
    }


    @Override
    public void run(String... args) throws Exception {
        System.out.println("hello");


        coffeeRepository.save(new Coffee("Americano", 60));
        coffeeRepository.save(new Coffee("Latte", 90));


        List<Coffee> coffees = coffeeRepository.findAll();


        coffees.forEach(coffee -> System.out.println(coffee.name));


    }
}

 

 

建立web服務

使用openjdk 官方images

 

 

docker pull openjdk:8-slim

 

 

將編好的jar 檔放到 /app/web.jar ,   並與container 連接,   日後更新jar檔  再重啟container 即可

 

docker run -it -d -p 8080:8080 -v /app:/app --link mongo:mongo --name web openjdk:8-slim

 

--link 與另一個名為mongo的 container 連接, 使用mongo 資料庫

-v /app:/app  與host的 /app連接

-p 與host的8080連接

 

 

進入web 的container 執行jar 檔啟動服務, 此時web container 的8080 port 是對應到主机的 8080

docker exec -it web bash

 

 

成功啟動畫面

 

連上host ip 8080 port

 

除錯

如果在web的 container 可利用telnet, mongo  指令確認是否能連上mongo

telnet mongo 27017

 

 

如果連不上, 表示兩個container 並不相連, 無法使用mongo container 的服務

 

 

END

你可能感興趣的文章

台中市網路應用競賽試場安排(一) 排試場就跟排班或是排課表一樣, 找不到一個都能讓所有人滿意的結果

proxmox lxc 救援 今天突然接到一名強者我朋友的臨時求援 他說他把pve 從5.1升到5.2後, kvm的虛擬机器都沒問題 , 但是lxc的

[shell script] 批次判斷domain name 正解設定 判斷dns 正解設定

臺中市雲端校務系統與Windows AD帳號整合(9) 3-2 Linux上隨系統開機啟動服務 以Centos 7 發行版為例 請注意, 此時提供服務的主机為Linux, 所以

臺中市雲端校務系統與Windows AD帳號整合(5) 安裝java環境

臺中市雲端校務系統與Windows AD帳號整合(7) 設定校端更改密碼程式及執行

我有話要說

>>

限制:留言最高字數1000字。 限制:未登入訪客,每則留言間隔需超過10分鐘,每日最多5則留言。

訪客留言

[無留言]

隨機好文

[vue.js] 動態的props 做parent-child components 雙向綁定 vue.js props components camel-case

讀取特定資料夾下的xls檔 讀取特定資料夾下的xls檔

windows ad 如何得知 dn 值 如何得知 windows ad 上的使用者dn 值 https://support.symantec.com/en_US

ArrayList 想移除特定值 想移出water, 使用lambda 的方式如下 List<String> fruits = new Arr

對照mac address 批次更改電腦名稱 讀取mac address 對照表, 還原電腦後,自動更改密碼 'show logged on user Dim