Idea中配置:Configurations:
配置Docker的url:往那个服务器的docker中构建镜像和容器:
DockerFile:
FROM openjdk:8-jre
RUN mkdir /app
COPY ./target/su-yan-education-0.0.1-SNAPSHOT.jar /app/app.jar
RUN mkdir -p /su-yan-education/studentexcelModel/
RUN mkdir -p /su-yan-education/teacherexcelModel/
RUN mkdir -p /su-yan-education/kindergartenexcelModel/
COPY ./files/studentInfo.xlsx /su-yan-education/studentexcelModel/studentInfo.xlsx
COPY ./files/teacherInfo.xlsx /su-yan-education/teacherexcelModel/teacherInfo.xlsx
COPY ./files/kindergartenInfo.xlsx /su-yan-education/kindergartenexcelModel/kindergartenInfo.xlsx
ENTRYPOINT ["java","-jar", "-Djava.net.preferIPv4Stack=true","/app/app.jar"]
EXPOSE 8683
docker-compose.yml: services下面的su-yan是随便起的名字,只是一个服务名称;image:su-yan 镜像名要和Configurations中保持一致;container_name:su-yan 容器名称一般和镜像名称一致。
version: '3.5'
services:
su-yan:
image: su-yan
container_name: su-yan
ports:
- 8683:8683
restart: always
volumes:
- ./logs/:/logs/
项目结构:
总结:
1.)本项目是一个单镜像项目,所以实际上是用不到docker-compose.yml的,具体详情可以查看docker-compose和dockerFile的区别,本项目中,(由于配置了服务器docker的路径,所以在idea中启动DockerFile就是相当于在服务器中构建build镜像的过程)在idea中运行DockerFile,就是构建镜像的过程,要想生成容器,需要在服务器中输入docker-compose up -d命令;关闭容器:docker-compose down(亲测,这个命令其实也就把当前目录下的容器删除了),就等于 docker stop 容器id 与docker rm 容器id 两条命令的作用。
2.)因为本项目是单镜像项目,所以也可以不用docker-compose.yml,那么就需要如下配置:取代docker-compose.yml,运行dockerFile之后,服务器中就有了镜像和容器,名称都是su-yan.
3.)上面两步都是通过在idea中构建镜像/构建镜像+生成容器,其实也可以直接在服务器中直接通过docker命令做这些。
4.)本项目只是简单的使用了docker,明白了idea和docker的配置整合以及流程,
docker的流程:首先写出DockerFile-->build 构建镜像-->run 运行并生成容器 .
另外补充:
1.服务器中要开启2375的端口,否则会报错,另外关闭防火墙之后docker需要重启,service docker restart,否则也会报错;
2.要删除镜像之前首先需要删除对应的容器,
删除镜像 : docker rmi 镜像id 删除容器: docker rm 容器id 删除容器如果容器正在运行,删除不了,要docker stop 容器id 先停止该容器。或者使用 -f 强制删除;
3.要进入到容器内,找到在DockerFile中创建的文件夹 dockers exec -it 容器id bash 进入到容器中,exit是退出当前容器。
补充:2020/07/20
docker的远程调用,由于之前使用的是docker的默认 开放端口2375,所以服务器被攻击了,所以不能使用默认的端口2375,同时docker有个加密的2376端口:
centos7 docker开启认证的远程端口2376配置教程
同时要在idea中把2375改成2376,服务器要开放2375端口,防火墙也要放开。