Skip to main content

使用 docker 构建部署卷王

· 3 min read

准备工作

新建配置文件

在根目录新建配置文件 application.properties,内容如下。其中我们将数据库的连接配置采用从环境变量中获取。

spring.application.name=SurveyKing
server.port=1991
spring.datasource.url=jdbc:mysql://${MYSQL_ADDRESS}/${MYSQL_DATABASE}
spring.datasource.username=${MYSQL_USERNAME}
spring.datasource.password=${MYSQL_PASSWORD}

新建 Dockerfile

在根目录新建 Dockerfile 文件,内容如下:

FROM maven:3.6.0-jdk-8-slim as build

ENV WEB_PATH /home/surveyking

COPY ./server $WEB_PATH
WORKDIR $WEB_PATH

# 这步是构建镜像的时候编译代码
# 如果在构建时编译时间过长,也可以将此命令注释,在本机进行构建

RUN mvn clean package -DskipTests -Ppro

FROM alpine

RUN apk add --update --no-cache openjdk8 \
&& rm -f /var/cache/apk/*

ENV WEB_PATH /home/surveyking
WORKDIR $WEB_PATH
COPY . $WEB_PATH

# 此命令是将上一个静像编译好的目标文件复制到我们的工作目录
# 如果你编译是在本机进行,此命令也一同注释即可
COPY --from=build /home/surveyking/api/target/ $WEB_PATH/server/api/target

# 这里要注意的是,运行的 surveyking-v0.3.0-beta.7.jar 包,要根据当前编译后的版本号来修改启动命令

RUN echo '#!/bin/sh' >> start.sh \
&& echo "java -jar ./server/api/target/surveyking-v0.3.0-beta.7.jar" >> start.sh

CMD ["sh", "start.sh"]

文件准备好后,执行构建静像操作

sudo docker build -t surveyking/server .

导入数据

创建 mysql 数据库,然后执行初始化脚本,下载脚本

启动容器

命令如下,其实中 80 端口为对外暴露的端口。

MYSQL_ADDRESS、MYSQL_DATABASE、MYSQL_USERNAME、MYSQL_PASSWORD 为刚才导入数据时数据的一些权限,这里采用通过环境变量的形式注入。

其中数据库 surveyking_app_table 数据库要提前创建好,并把上面的sql数据导入

sudo docker run -it -d --name surveyking-app -p 8877:1991 -e MYSQL_PASSWORD=123456 -e MYSQL_USERNAME=root -e MYSQL_DATABASE=surveyking_app_table -e MYSQL_ADDRESS=172.16.1.13:3306 surveyking/server

执行命令后,通过 http://127.0.0.1:8877 访问。