云部署-基于Docker的部署⽬前有⼀个Spring Boot项⽬,内容⾮常的简单,向浏览器输出"Hello Docker!!"这句话。
package com.wisely.ch10;
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;
@SpringBootApplication
@RestController
public class Ch10Application {
@RequestMapping("/")
public String home() {
return "Hello Docker!!";
}
public static void main(String[] args) {
SpringApplication.run(Ch10Application.class, args);
}
}
使⽤clean package命令将该项⽬打包成jar包
将jar⽂件传输到阿⾥云服务器的/var/apps/ch10docker⽬录下
在同级⽬录下创建⼀个Dockerfile⽂件命令如下:
touch Dockerfile
编辑内容为:
FROM java:8
MAINTAINER wyf
ADD ch10-0.0.1-SNAPSHOT.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","/app.jar"]
解释如下:
①基镜像为Java,版本为8,JDK的安装请参照我往期的⽂章。
②MAINTAINER为作者
③将ch10-0.0.1-SNAPSHOT.jar添加到镜像中,并重命名为app.jar
④运⾏镜像的容器,监听8080端⼝
⑤启动时运⾏java -jar app.jar
在/var/apps/ch10docker⽬录下执⾏如下命令:
docker build -t wisely/ch10docker .
其中wisely/ch10docker为镜像名称,这⾥设置wisely为前缀,这也是Docker镜像的⼀种明明习惯。最后还有⼀个".",这时⽤来指明Dockerfile路径的,"."表⽰Dockerfile在当前路径下。
编译完成后查看本地镜像
通过下⾯命令运⾏
docker run -d --name ch10 -p 8080:8080 wisely/ch10docker
查看当前容器状态
附(Dockerfile主要指令)
(1)FROM
指明了当前镜像继承的基镜像,编译当前镜像时会⾃动下载基镜像。
⽰例:
FROM ubuntu
(2)MAINTAINER
指明了当前镜像的作者。
⽰例:
MAINTAINER tjs
(3)RUN
docker打包镜像
可以在当前镜像上执⾏Linux命令并形成⼀个新的层。RUN是编译时的动作。
⽰例有如下两种格式,CMD和ENTRYPOINT也是如此:
RUN /bin/bash -c "echo helloworld"
RUN ["/bin/bash", "-c", "echo hello"]
(4)CMD
指明了启动镜像容器时的默认⾏为。⼀个Dockerfile⾥只能有⼀个CMD指令。CMD指令⾥设定的命令可以在运⾏镜像时使⽤参数覆盖。CMD是运⾏时的动作。
⽰例:
CMD echo "this is a test"
可被docker run -d image_name echo "this is a test"覆盖
(5)EXPOSE
指明了镜像运⾏时的容器必须监听指定的端⼝。
⽰例:
EXPOSE 8080
(6)ENV
可⽤来设置环境变量
⽰例:
ENV myName=tjs
ENV myName tjs
(7)ADD
从当前⼯作⽬录复制⽂件到镜像⽬录中去
⽰例:
/mydir/
(8)ENTRYPOINT
可让容器像⼀个可执⾏程序⼀样运⾏,这样镜像运⾏时可以像软件⼀样接收参数执⾏。ENTRYPOINT是运⾏时动作。
⽰例:
ENTRYPOINT ["/bin/echo"]
我们可以向镜像传递参数运⾏:
docker run -d image_name "this is not a test"⽂章转⾃《Spring Boot实战》

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。