记录下自己通过docker-compose运行jar的心路历程,参考过很多其他人的资料
1、安装docker
我使用的是centos7 用yum安装这个很快
2、docker-compose安装
curl -L https://get.daocloud.io/docker/compose/releases/download/1.27.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
通过以上三个命令可以将docker-compose安装完成,docker-compose版本和docker版本需要匹配。
有些博客说要找不到docker-compose取别名 ,在此提醒千万不要这样搞,浪费了我大量时间来解决运行docker-compose build 命令 找不到docker-compose.yml的异常。
3、配置docker-compose.yml
docker-compose.yml记得放在jar的同级或者父级。
网上有些配置写的有些复杂,我这里就用了最简单的:
version: "3.8"
services:
heart:
build:
context: ./heart #Dockerfile的目录
network_mode: host
restart: always
container_name: heart
hostname: heart
image: heart
volumes: #如果上传文件保存在本地需要进行地址映射
- /home/heart/:/home/heart/
version要注意和docker版本匹配
这里想说的就是,如果上传的文件是保留在本地,没有使用文件服务器,那么就要注意需要配置
volumes: #如果上传文件保存在本地需要进行地址映射
- /home/heart/:/home/heart/
这个,没有配置上传的文件都是保存在docker容器内部,会导致找不到文件的发生,所以需要映射到宿主机上的具体地址。
4、Dockerfile编写
进入jar所在目录,编写如下Dockerfile
FROM openjdk:8
ENV TZ=Asia/Shanghai
RUN ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN mkdir -p /heart
WORKDIR /heart
EXPOSE 8090
ADD ./heart-business.jar ./
CMD java -jar heart-business.jar -Xmx512m --spring.profiles.active=test
如果碰到权限问题还需要给文件赋权。
--spring.profiles.active=test 主要是如果有配置2套环境配置,在测试服务器上就要指定好环境,不然本地打包的时候老是需要来换切换配置 很少麻烦,这里配置后,本地就不用切换了。
5、运动docker-compose命令
最后运行 docker-compose build heart 和 docker-compose up -d heart 命令来启动jar。