[精讚] [會員登入]
229

在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

你可能感興趣的文章

資料表更改為多個primary key, MariaDB [database]> describe TABLENAME; 想由本來是兩個PRIMARY KE

vim 特定範圍行數開頭加上# 註解 vim 特定範圍行數開頭加上# 註解

proxmox zfs 建立異地備份與還原 zfs最吸引人的地方就是可以建立快照並傳輸到遠端机器, 達到增量備份, 並且隨時從任一備份檔還原 完全不怕勒索病毒 將v

[web] 自訂模組-打字機與跑馬燈效果 自訂模組-打字機效果

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

臺中市雲端校務系統與Windows AD帳號整合(4) 雲端校務系統與Windows AD的架構

我有話要說

>>

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

訪客留言

[無留言]

隨機好文

download a file from spring boot controllers ownload a file from spring boot controllers

apache 反向代理 80轉443轉8080 apache, proxy pass

2018 hoc 掃地機器人 掃地機器人只能打掃沒有障礙物(桌椅、牆壁)的範圍,請寫程式控制機器人打掃餐廳的所有走道, 並在清掃完畢後回到充電器。

臺中市雲端校務系統與Windows AD帳號整合(6) 修改Windows AD 密碼原則

雲端校務系統與OPENLDAP帳號整合(3) 二 建置更改密碼服務 下載校端更改密碼程式: 連結 檢查是否安裝java 8 #java -version 安裝open