[精讚] [會員登入]
638

在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的

如何在docker 的nginx 做另一個container的反向代理 環境 docker 中一container 跑 nginx 對外服務80 port, http://server 另一c

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

ubuntu ufw ufw 簡易筆記 原則禁止,例外開放 ufw default deny 啟動ufw sudo ufw enable 關掉

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

使用vbs設定windows 10 靜態IP setting static ip Set Adapter = GetObject("winmgmts:Win

隨機好文

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

利用maven建立一個可執行的jar檔 利用maven建立一個可執行的jar檔

臺中市雲端校務系統與Windows AD帳號整合(3) LDAP的基本概念

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

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