使用Docker发布应用

新建spring boot应用demo-docker,添加web依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

入口类

@RestController
@SpringBootApplication
public class DemoDockerApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoDockerApplication.class, args);
    }
    @RequestMapping("/")
    public String index(){
        return "Hello world!"+new Date();
    }
}

使用maven打包

打开demo-docker arget 目录,找到jar文件

接下来使用Xshell连接到CentOS,cd 到目标目录,这里假如为/opt/demo

可以直接吧jar文件拖放到Xshell中,需要在CentOS上安装rz命令,如果没有安装会报错

使用下面的命令安装

yum install -y lrzsz

上传jar包后在demo 目录下创建一个Dockerfile文件

vi Dockerfile

编辑内容如下

FROM java:8
VOLUME /tmp
COPY demo-docker-0.0.1-SNAPSHOT.jar app.jar
RUN bash -c 'touch /app.jar'
EXPOSE 8100
ENTRYPOINT ["java","-jar","/app.jar"]

这里的touch命令是更新文件的创建时间

目录结构如下

接下来创建镜像

docker build -t demo .

-t 指定生成镜像的标签信息

后面的"."表示当前目录

执行上面的指令输出结果

 使用下面命令运行镜像

docker run -d -p 8100:8100 demo

查看运行状态,访问http://localhost:8100

Docker指令说明

  • FROM 格式为FROM<image>,或者FROM<image>:<tag>
  • RUN 格式为RUN<command>或RUN["executable","param1","param2"] 前者默认将在shell终端运行命令,即/bin/sh -c;后者则使用exec执行,如RUN ["/bin/bash","-c","echo hello"]
  • CMD 格式为CMD ["executable","param1","param2"] 使用exec执行;或CMD command param1 param2 在/bin/sh中执行;
  • EXPOSE 格式为EXPOSE <port> [<port>...],如 EXPOSE 22 80 443
  • ENV 指定环境变量,格式为ENV <key> <value>,如 ENV PATH /usr/local/nginx
  • ADD 格式为ADD <src> <dest>,将复制指定的<src>路径下的内容到容器的<dest>路径下,<src>可以是Dockerfile所在目录的一个相对路径(文件或目录),也可以是一个URL,还可以是一个tar文件(如果为tar文件,会自动解压到<dest>路径下)
  • COPY 格式为COPY <src> <dest>,复制本地主机的<src>下的内容到镜像的<dest>下,目标路径不存在时会自动创建,当使用本地目录为源目录时,推荐用COPY而不是ADD
  • ENTRYPOINT 指定镜像的默认入口,支持两种格式 ENTRYPOINT ["executable","param1","param2"],或ENTRYPOINT command param1 param2
  • VOLUMN 创建一个数据卷挂载点 格式为 VOLUMN ["/data"]
  • USER 指定运行容器的用户名
  • WORKIDR 为后续的RUN、CMD和ENTRYPOINT指定配置工作目录
原文地址:https://www.cnblogs.com/uptothesky/p/8320267.html