当前位置:   article > 正文

使用Docker部署微服务_docekr java --server.port

docekr java --server.port

听说最近大家都不用虚拟机,开始用Docker进行微服务部署了,所以稍微学习了一下,下面是使用Docker进行微服务部署的一个简单的例子。

一. 环境准备

1. centOS7安装

如果是windows下需要用VMWare搭建centOS7的环境。

过程略

2. jdk安装

我下载的是jdk1.8.0_172,放在 /usr/lib/java/jdk1.8.0_172 目录下。

过程略

3. docker安装

(1)更新yum包到最新

# sudo yum update

(2)设置yum源

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

(3)安装docker

# sudo yum install docker-ce

(4)启动并加入开机启动

  1. # sudo systemctl start docker
  2. # sudo systemctl enable docker

(5)验证是否安装成功

# docker version

 

二. 微服务部署

1. 在windows下编译出可运行的jar包

我这里生成的jar包在 D:\workspace\JavaBasicStudy\target\ 下

2. 复制到centos,并编译成docker可运行的镜像

(1)通过SSH直接将jar包复制到centos的/usr/local/springbootService目录下,目录自己建

(2)在centos中运行下面的命令,将jdk复制到springbootService目录下

  1. #cd /usr/local/springbootService
  2. #cp -r /usr/lib/java/jdk1.8.0_172 /usr/local/springbootService

(3)创建Dockerfile,用来将jar包编译成docker可运行的镜像

#vi Dockerfile

 

Dockerfile的内容如下:

  1. # Enviroment
  2. FROM centos
  3. # Copy JDK
  4. COPY jdk1.8.0_172 jdk1.8.0_172
  5. # Set JDK
  6. ENV JAVA_HOME=./jdk1.8.0_172
  7. ENV PATH=$JAVA_HOME/bin:$PATH
  8. ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  9. # Copy jar
  10. COPY JavaBasicStudy-1.0-SNAPSHOT.jar .
  11. ADD JavaBasicStudy-1.0-SNAPSHOT.jar app.jar
  12. # Port
  13. EXPOSE 6001
  14. # Command
  15. ENTRYPOINT ["java","-jar","/app.jar"]

(4)构建镜像

docker build -t mystudy:1.0 .

(5)查看镜像

  1. [root@hadoop1 springbootService]# docker images
  2. REPOSITORY TAG IMAGE ID CREATED SIZE
  3. mystudy 1.0 4c1ade2235eb 27 seconds ago 677MB
  4. centos latest 0f3e07c0138f 8 weeks ago 220MB

3. 启动镜像

# docker run -p 5001:6001 mystudy:1.0

这里没有用-d,因为想要看一下服务是否真的能启动。

如果加上-d,容器就会在后台运行,返回一串ID就表示成功了:

  1. [root@hadoop1 springbootService]# docker run -d -p 5001:6001 mystudy:1.0
  2. 61ccdef3cd5a57e715800bf0e2661959020b33fe3dc1b4c98639e566e449202b

通过docker ps -a 命令可以看到所有容器(加上-a可以看到已经退出[STATUS=Exited]的容器,不加就只能看到正在运行[STATUS=Up]的容器):

  1. [root@hadoop1 springbootService]# docker ps -a
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. 61ccdef3cd5a mystudy:1.0 "java -jar /app.jar" 3 minutes ago Up 3 minutes 0.0.0.0:5001->6001/tcp exciting_knuth
  4. b5b67e37c30d mystudy:1.0 "java -jar /app.jar" 10 minutes ago Exited (130) 4 minutes ago awesome_morse

使用下面的命令可以进入容器:

docker attach NAMES或者用CONTAINER ID 

比如:

  1. #docker attach exciting_knuth
  2. 或者
  3. #docker attach 61ccdef3cd5a

或者用:

docker exec -it ContainerName /bin/bash

进入容器后,按ctrl+P+Q可退出

 

重要:这里一共用到了3个端口:

微服务的application.yml中用到了6001

Dockerfile中用的是EXPOSE 6001

启动的时候又写了5001:6001

那么这三个端口分别是什么意思呢?

首先,application.yml中的6001端口必须和Dockerfile中EXPOSE的6001一致,表示docker容器对外暴露6001端口。

docker run的时候的5001:6001,表示宿主机的5001端口对应docker容器的6001端口

如果是多个docker容器就是5001:6001,5002:6001,5003:6001...

容器中的端口不必每个都修改,只要修改宿主机对应的端口即可。

 

三. 测试

在postman中调用:192.168.3.101:5001/service/hello?token=1

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/218332
推荐阅读
相关标签
  

闽ICP备14008679号