spring cloud微服务docker启动

1. 背景java

将系统拆分红微服务,一个系统可能拆分红十几个服务,服务太多会影响发布和管理,因此容器话以后易于管理和版本发布,鉴于此将spring cloud微服无docker容器化。git

2.依赖环境github

Centos7.5,Maven环境 和 Docker环境spring

本人机器不是Windows系统,直接装的Centos系统,可能系统有差别,Windows下应该也能够,没有具体测试。docker

3.编写demo程序app

@RestController
public class ProviderController {

    private static Logger  logger = LoggerFactory.getLogger(ProviderController.class);

    @RequestMapping("/hello")
    public String hello(){
        logger.info("hello debug world "+new Date());
        logger.debug("hello debug world "+new Date());
        logger.error("hello debug world "+new Date());
        return "Hello World";
    }

}

4.先用maven编译maven

在编译时会下载相应的依赖jar包。ide

# 在模块下面,具备pom文件的那层,执行如下命令
mvn clean && mvn install

 

5.编写Dockerfilespring-boot

FROM openjdk:8-jdk-alpine
VOLUME /tmp
COPY target/*.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

这是一个简单的Dockerfile,微服务

From是须要的依赖,

COPY是将target下编译好的包拷贝到docker虚拟环境的根目录下

ENTRYPOINT是启动后要执行的命令

6.docker命令编译image

docker build -t docker-cloud/provider:1.0 .

编译完成以后执行查看镜像命令,会看到编译出来的镜像,能够制定不一样的tag版本。

# 查看docker镜像
docker images

 

7.启动编译好的镜像

 docker run --name provider -p 8090:8090 -d doceker-cloud/provider:1.0

--name 指定启动的容器名称

-p 8090:8090 将本地的8090端口和docker容器的8090端口作映射

-d 是后台运行docker程序

最后面根的是要启动的镜像,我选择启动的是docker-cloud/provider镜像,而且TAG是1.0的版本。

8.启动以后查看docker有没有启动

#查看docker启动的进程
docker ps

 

9. 启动以后能够看一下容器里面的样子

docker exec -it provider /bin/sh

其中app.jar就是咱们打包镜像时拷贝过去的jar文件,logs目录是我打的日志

 

10.我想看日志怎么办?

在docker里面命令是颇有限的,不少命令用不了,像tailf这种命令就无法实时查看日志,因此咱们就要把日志文件挂载到磁盘的目录下面。

docker run --name provider -v /home/zhaowei/docker-provider/logs:/logs -d docker-cloud/provider:1.0

-v 就是将目录 /home/zhaowei/docker-provider/logs 挂载到容器的logs目录下,这样产生的日志文件就直接能够在磁盘目录下查看了。

 

11. 个人想改启动端口怎么办?

spring cloud程序通常能够在applicaiton.properties里指定启动的端口号,但这样有个局限,就是写死了,可是也无所谓,命令行能够指定端口参数,命令行里的参数优先级比配置文件的高,因此在启动的时候指定端口参数就能够了,可是咱们的启动参数是写在Dockerfile里面的,因此这里要修改Dockerfile文件了。

FROM openjdk:8-jdk-alpine
VOLUME /tmp
COPY target/*.jar app.jar
ENTRYPOINT ["sh","-c","java ${JAVA_OPTS} -jar /app.jar ${0} ${@}"]

咱们在启动docker容器时命令是这样的:

docker run --name provider2 -p 9090:9090 -v /home/zhaowei/docker-provider/logs:/logs -d docker-cloud/provider:2.0 --server.port=9090

12. 其余

demo:https://github.com/liuzwei/docker-app.git

参考:这里是更详细的说明 https://github.com/spring-guides/top-spring-boot-docker

相关文章
相关标签/搜索