通常的jar应用,直接部署在服务器上,使用服务器资源直接部署,一个jar,一个启动脚本,就可以了.
最近想到一个场景,让docker时间和宿主机的时间不一样,进行不同应用部署的隔离.整理一下docker部署.下面的步骤命令都是centos7下的.
先得确认一下有安装工具
安装工具:
yum -y install yum-utils
添加仓库:
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
安装:
sudo yum install docker-ce docker-ce-cli containerd.io
或指定你要的版本安装,查看可用版本:
yum list docker-ce --showduplicates | sort -r
启动:
sudo systemctl start docker
(选)尝试启动hello-world镜像,
sudo docker run hello-world
如果提示不存在,可以手动pull一下:
sudo docker pull hello-world
其他命令
启动: service docker start 关闭: service docker stop查看容器: docker container ls
到这里,docker的环境就准备好了.接下来,在你原先jar所在目录.创建一Dockerfile文件.
创建Dockerfile,参考内容 (# 后面是注释):
FROM java:8VOLUME /tmp #随便找个目录ADD your-app-1.1.jar app.jar #第一个你的jar名ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]ENV TZ=Asia/Shanghai # 时区,下面这句是把时间同步为宿主机RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezoneEXPOSE 8099 # 暴露的端口
然后构建:
docker build -t yourAppName . # 注意后面有个点,名字随便取
启动应用:
docker run -d -p 8099:8099 -e "SPRING_PROFILES_ACTIVE=sit" --net=host --cap-add SYS_TIME --name admin-test yourAppName
--net=host表示网络环境使用宿主机的,这样只要你的宿主机可以连的数据库之类的都可以直接连.
查看镜像
docker images
其他常用操作命令
看容器:docker ps -a 杀容器:docker rm -f ID日志:docker logs -f ID进入:docker exec -it ID /bin/sh