-
Write DockerFile file
FROM lwieske/java-8 #容器元信息,帮助信息,Metadata,类似于代码注释 MAINTAINER [email protected] # 容器内部环境变量 ENV TZ=Asia/Shanghai ENV JAVA_OPTS="-Xms128m -Xmx256m" RUN ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone # 创建目录 RUN mkdir -p /api-blog # 工作目录 WORKDIR /api-blog # 暴露端口 EXPOSE 81 # 将本地Jar添加到Docker镜像中 【Jar包位置】 【容器内部位置】 ADD ./Blog-api-0.0.1-SNAPSHOT.jar ./ # 睡眠5秒 启动Jar包 CMD sleep 5;java $JAVA_OPTS "-Dfile.encoding=UTF-8" -jar Blog-api-0.0.1-SNAPSHOT.jar
-
write
docker-compose.yml
version: '2' services: # docker-compose build 启动的名称 api-blog: # 构建DockerFile镜像 build: # 指定DockerFile文件位置 context: ./build/api-blog # 配置Docker启动自动启动 restart: always # 镜像启动后 容器名称 container_name: api-blog # 镜像名称 image: api-blog # 端口映射 宿主机端口:容器端口 ports: - "81:81" # 文件挂载,主要将Jar产生的日志映射到宿主机上 volumes: - "./build/api-blog/logs:/api-blog/log/"
-
Take a look at where each file is stored
[root home]# tree -L 3 . ├── build │ ├── api-blog │ │ ├── Blog-api-0.0.1-SNAPSHOT.jar │ │ ├── Dockerfile │ │ └── logs ├── docker-compose.yml
-
project packaging
# 打包命令 mvn clean -Dmaven.test.skip=true package
-
scp
Upload the Jar to the server using# 拷贝文件 被拷贝文件 目标目录 scp -P 22 ./target/Blog-api-0.0.1-SNAPSHOT.jar 服务器用户名@服务器IP:/home/build/api-blog
-
Compile the image and start the container on the server
It is recommended
docker-compose.yml
to operate in the directory# 次命令将 yml中api-blog 指定的 DockerFile 构建为镜像 并启动 docker-compose up --build -d api-blog
Finally, the commands of steps 4, 5, and 6 can be aggregated into one shell
script
#!/usr/bin/env bash
# 编译Maven项目
mvn clean -Dmaven.test.skip=true package
# 拷贝文件 被拷贝文件 目标目录
scp -P 22 ./target/Blog-api-0.0.1-SNAPSHOT.jar 服务器用户名@服务器IP:/home/build/api-blog
# ssh连接服务器 执行命令
ssh 服务器用户名@服务器IP -p 22 'cd /home; docker-compose up --build -d api-blog; sleep 5s; docker logs -f api-blog'