Docker部署SpringBoot项目

1.创建Spring-boot项目

首先在IDE中创建一个SpringBoot项目,我这里命名为docker-demo

由于只做测试用,maven只引入web依赖

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

我这里只创建一个Controller用来测试:

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/test")
public class TestController {

    @GetMapping("get")
    public String get(String a) {
        return a;
    }
}

两个配置文件application-dev.yaml和application-prod.yaml分别对应不同的环境的配置文件,内容分别如下。

application-dev.yaml:

server:
  port: 8080

application-prod.yaml:

server:
  port: 80

2.编写Dockerfile文件

在项目路径下加入Dockerfile文件,内容如下:

FROM java:8
COPY entrypoint.sh /
RUN chmod 755 /entrypoint.sh

COPY ./target/docker-demo-0.0.1-SNAPSHOT.jar /home/work/prologue/docker-demo-0.0.1-SNAPSHOT.jar

ENTRYPOINT ["/entrypoint.sh"]

我是用java:8镜像作为基础镜像的,你也可以手动做自己的基础镜像。
entrypoint.sh脚本内容如下:
#!/bin/bash
echo "start prologue!!!!!!!"
echo "active_profile $ACTIVE_PROFILE !!!"
java -Xms4096m -Xmx4096m -jar /home/work/prologue/docker-demo-0.0.1-SNAPSHOT.jar --spring.profiles.active=$ACTIVE_PROFILE

if [[ $? != 0 ]]; then
  echo Failed to start java >&2
        exit 1
fi

#docker run -d --name dockerdemo -p 8080:80 -e ACTIVE_PROFILE="prod" dockerdemo

其中 ACTIVE_PROFILE 是设置的环境变量,用来指定当前环境,来加载相应的配置文件。后边我们可以通过docker run命令来传递该变量。

3.构建镜像

进入项目根路径,执行maven命令来打包项目:

mvn clean package -DskipTests

通过以下命令来构建镜像:

docker build -t dockerdemo .

构建成功后,我们命令 docker images 就可以看到有了dockerdemo镜像

也可以通过docker images | grep dockerdemo 直接查找该镜像

4.启动容器

采用如下命令启动容器

docker run -d --name dockerdemo -p 8080:80 -e ACTIVE_PROFILE="prod" dockerdemo

参数解释如下

-d: 后台运行容器,并返回容器ID;

--name dockerdemo:指定容器名称为dockerdemo;

-e ACTIVE_PROFILE="prod":设置环境变量,即指定运行文件为prod;

-p 8080:80 :指定端口映射,由于我们采用的是prod文件,即项目启动端口号为80,所以映射容器端口号为80;

5.访问

由于我们设置的映射的宿主机端口号为8080

我们在宿主机上访问:

http://127.0.0.1:8080/test/get?a=111

能够正确返回结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值