官方入門一直在用Python的例子伟众,是時(shí)候試試自己的java項(xiàng)目了鄙皇。
去spring官網(wǎng)找一個(gè)soringboot docker的例子https://spring.io/guides/gs/spring-boot-docker/
按照例子一路跑下來近上,順利看到Hello Docker World!
docker run -p 8080:8080 -t springio/gs-spring-boot-docker
接下來把它按照入門3里那樣改造下躏鱼,變成一個(gè)運(yùn)行2個(gè)replicas的服務(wù)德谅。
1. 改一下Application.java, 增加顯示計(jì)算機(jī)主機(jī)名魏宽。
package hello;
import java.net.InetAddress;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.net.UnknownHostException;
@SpringBootApplication
@RestController
public class Application {
@RequestMapping("/")
public String home() {
InetAddress ia;
String host = "";
try {
ia = InetAddress.getLocalHost();
host = ia.getHostName(); //獲取計(jì)算機(jī)主機(jī)名
} catch (UnknownHostException e) {
e.printStackTrace();
}
return "Hello Docker World! 主機(jī)名:"+host;
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
打包鏡像
./mvnw install dockerfile:build
2. 寫一個(gè) docker-compose.yml
version: "3"
services:
web:
# replace username/repo:tag with your name and image details
image: springio/gs-spring-boot-docker
deploy:
replicas: 2
resources:
limits:
cpus: "0.2"
memory: 500M
restart_policy:
condition: on-failure
ports:
- "8081:8080"
networks:
- webnet
networks:
webnet:
- 運(yùn)行
docker stack deploy -c docker-compose.yml springboot-docker
用 docker service ls
查看, 隔了2分鐘2個(gè)replicas才啟動(dòng)起來滴肿。
用8081訪問一下岳悟,有顯示,但是哪里不對呢泼差? 沒有顯示主機(jī)名贵少。
跟
docker run -p 8080:8080 -t springio/gs-spring-boot-docker
看到的是不一樣的,看到的是我沒加主機(jī)名之前的效果堆缘。
懷疑它不是運(yùn)行的本地鏡像滔灶,而是從docker hub pull了一個(gè)鏡像。
于是給我本地的鏡像打個(gè)tag:
docker tag springio/gs-spring-boot-docker springio/gs-spring-boot-docker:my
然后改一下docker-compose.yml
image: springio/gs-spring-boot-docker:my
再次運(yùn)行
docker stack deploy -c docker-compose.yml springboot-docker
終于正常了吼肥, 啟動(dòng)速度也快了很多录平。
總結(jié)教訓(xùn):網(wǎng)上的一些教程的demo已經(jīng)發(fā)布到docker hub了,一不小心你運(yùn)行的不是本地的缀皱,而是從hub上下載下來的鏡像斗这。