DockerFile和Docker-Compose部署springboot项目

1 创建一个简单的springboot项目,用于测试

@SpringBootApplication
@RestController
public class DockerTestApplication {

    public static void main(String[] args) {
        SpringApplication.run(DockerTestApplication.class, args);
    }

    @GetMapping("/docker")
    public String docker(){
        return "Hello Docker!";
    }

}

2 打包,项目重命名为app.jar将app.jar上传到/opt/docker_springboot目录下

3 编写Dockerfile

在/opt/docker_springboot下touch Dockerfile,写入如下脚本:

FROM daocloud.io/library/java:8     #下载项目所需运行环境jdk8
RUN bash -c 'mkdir /opt/car'     #运行容器时在容器里的/opt下创建/car目录
COPY ./app.jar /opt/car     #将当前目录下的app.jar添加到容器内部的/opt/car下
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/opt/car/app.jar"] #启动容器时运行/opt/car/app.jar

5 构建镜像

在/opt/docker_springboot下执行:

docker build -t car_image:1.0 .

.表示Dockerfile位于当前目录,car_image是镜像名称,1.0是版本号

构建后使用docker images查看在这里插入图片描述
6 编写docker-compose.yml

version: '3.1'
services:
  car: #服务名称,名称任意
    restart: always #只要docker启动那么这个容器就跟着一起启动
    image: car_image #镜像名称
    container_name: car #容器名称
    ports:
    - 8080:8080 #端口映射
    environment:
      TZ: Asia/Shanghai #设置时区
    volumes:
    - /opt/docker_springboot:/opt/car #数据卷挂载

7 此时宿主机的目录如下:
在这里插入图片描述
8 使用docker-compose up -d命令启动容器,启动后使用docker ps查看:
在这里插入图片描述
9 浏览器访问虚拟机ip:8080/docker即可看到:
在这里插入图片描述

10 由于第六步使用volumes让宿主机和容器内部进行映射,在宿主机/opt/docker_springboot下随便创建一个文件,例如123.txt,然后使用
docker exec -it 容器id /bin/bash进入容器,在容器的/opt/car下也能看到123.txt
在这里插入图片描述


版权声明:本文为weixin_38470396原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。