原生docker:
首先准备基础镜像,这里用的是已有的jdk8的镜像:openjdk:8-jre-alpine
然后写Dockerfile文件
#使用基础镜像openjdk:8-jre-alpine
FROM openjdk:8-jre-alpine
#将Dockerfile文件目录下的spring-test-1.0.0-SNAPSHOT.jar拷贝到容器的内部路径/app下
COPY ./spring-test1.0.0-SNAPSHOT.jar /appspring-test-1.0.0-SNAPSHOT.jar
COPY ./applications.properties /app/applications.properties
#挂载目录/data/logs (不持久化)
VOLUME /data/logs
#申明端口9999,方便持久化挂载之类的
EXPOSE 9999
#启动时执行命令
CMD ["java" ,"-jar" "-Dlog.path=/data/logs" ,"/app/spring-test-1.0.0-SNAPSHOT.jar"]
完成后执行docker build -t spring/test .
后面的.表示当前目录下的Dockerfile文件
表示构建镜像名称为spring/test,会自动打上标签spring/test:latest
也可以通过docker tag spring/test:latest spring/test:V1为这个镜像打个新的标签v1
上传镜像到仓库:docker push spring/test:latest
运行镜像容器:docker run -d -p 9998:9999 spring/test:latest -v /data/devops/logs:/data/logs
-d表示后台运行
-p表示端口映射:将容器的9999端口映射到物理主机的9998端口
-v表示磁盘挂载:将容器中的/data/logs目录挂载到宿主机的/data/devops/logs这样就可以持久化了,
也就是容器停止后这个目录依然存在
因为dockerfile文件中运行命令没有指定applications.properties的参数,这里需要加上然后重新构建
首先删除运行过的容器
docker ps -a 列出所有容器
然后执行 docker rm containtsid
删除后删除镜像
docker images 找到相应的镜像
执行 docker rmi imageid
然后修改Dockerfile文件重新构建
重新执行docker run -d -p 9998:9999 spring/test:latest
通过docker ps 可以看到我们运行的容器可以得到容器id:895140419e18
然后通过docker exec -it 895140419e18 /bin/bash进入到容器内部的命令行
前端打包:
# Base images 基础镜像
FROM nginx:stable
#MAINTAINER 维护者信息
MAINTAINER orange
COPY /build /usr/share/nginx/
COPY /build/static /usr/share/nginx/orange/static/
RUN rm /etc/nginx/conf.d/default.conf
#EXPOSE 映射端口
#EXPOSE 80
#CMD 运行以下命令
#CMD ["nginx"]