docker (Dockerfile)部署springboot项
2019-11-07 本文已影响0人
Suncy
# 拉取镜像,我使用的基础镜像为openjdk-8-jre-alpine ( alpine最小体积linux操作系统,jdk8 )
docker pull openjdk -8-jre-alpine
# 自行选择部署目录,我的目录是/srv/docker/webapp
mkdir -p /srv/docker/webapp
# 在/srv/docker/webapp下新建文件Dockerfile
vim Dockerfile
# Dockerfile文件内容如下:
# 基础镜像
FROM openjdk:8-jre-alpine
# 在镜像中创建/usr/local/myapp目录 (以上镜像进入目录后会直接在根目录下)
RUN mkdir /usr/local/myapp
# 复制上下文当前路径下的smarthome_backend.jar 至 镜像/usr/local/myapp下(此处构建时候找的不是宿主机的路径,
# 而是docker引擎上下文中的路径,所以需要将smarthome_backend.jar复制到Dockerfile所在目录下,不然会找不到路径)
COPY smarthome_backend.jar /usr/local/myapp
# 切换至镜像的 /usr/local/myapp目录(由于每一个RUN 命令都会启动一个新的容器,故,此处使用WORKDIR命令)
WORKDIR /usr/local/myapp
# 在容器中配置环境变量:SPRING_PROFILES_ACTIVE=Test (配置该变量后,项目配置会优先使用当前变量对应的配置文件)
ENV SPRING_PROFILES_ACTIVE Test
# 容器中执行命令 java -jar smarthome_backend.jar 启动项目
CMD ["java","-jar","smarthome_backend.jar"]
图片.png
# 在本机中项目的根目录下编写脚本,内容如下:
# 打jar包
./gradlew bootjar &&
# 复制jar包到zls服务器的webapp目录
scp build/libs/smarthome_backend.jar root@zls:/srv/docker/webapp &&
# 1.连接到zls服务器,2.切换到Dockerfile所在目录,3.删除名为myapp的docker容器并且删除名为myapp的镜像,4.执行构建myapp镜像命令,5.启动一个容器,命名为myapp
ssh root@zls 'cd /srv/docker/webapp && docker rm -f myapp && docker rmi -f myapp &&
docker build -t myapp . && docker run -it --name myapp -p 12321:12321 -d myapp'
图片.png
图片.png