目录
一. dockerfile编写
# 拉取最小化的jre 1.8的运行环境(anapsix/alpine-java 项目名称,8_server-jre_unlimited为标签tag)
FROM anapsix/alpine-java:8_server-jre_unlimited
#设置语言包为中文(ubuntu 16.04 64位版本和 kernel 4.4 内核),防止日志等出现中文乱码
ENV LANG C.UTF-8
#指定容器时间
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
#创建文件夹
RUN mkdir -p /root/apps/work
#切换到该文件夹下
WORKDIR /root/apps/work
#告诉Docker服务端暴露端口,在容器启动时需要通过 -p 做端口映射
EXPOSE 8081
#将jar包复制到Dockerfile所在的相对目录下目录下,可以是URL,也可以是tar.gz(自动解压);(当使用本地目录为源目录时,推荐使用 COPY)
#ADD是复制指定路径到容器路径,COPY是复制本地主机的路径到容器的路径。
ADD ./target/xxx-test.jar ./app.jar
# Djava.security.egd=file:/dev/./urandom 解决阿里云的tomcat启动慢的问题
#配置容器,使其可执行化,相当于执行命令 java -Djava.security.egd=file:/dev/./urandom -jar app.jar 要追加任何命令可以直接在 [ ] 数组中追加任何参数,但是要保证排序正确
#效果与CMD类似,不可被 docker run 提供的参数覆盖,如果指定了多条指令,则最后一条执行。
ENTRYPOINT ["java", "-Xmx512m","-Xms512m","-Djava.security.egd=file:/dev/./urandom", "-jar", "app.jar"]
#CMD指定启动容器时执行的命令,每个Dockerfile只能有一条CMD指令,如果指定了多条指令,则最后一条执行。(会被启动时指定的命令覆盖)
#构建容器后调用,也就是在容器启动时才进行调用 相当于我们给容器启动过程增加参数,--spring.profiles.active=test 参数我们一般不再这里定义,我们可以放到 docer-compose 的变量定义里
#CMD ["--spring.profiles.active=test"]
二、制作docker镜像
1. 编写完成Dockerfile,将xxx-test.jar和Dockerfile文件上传到服务器的同一目录下。
2. 在该目录下执行docker操作,使其构建镜像。
docker build -t xxx-test.jar:v1 .
-t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。
-f :指定要使用的Dockerfile路径;(如果有多个Dockerfile文件 可以用-f指定)
注意:
‘.’ 代表当前路径,少了的话会提示错误:"docker build” requires exactly 1 argument."
3. 镜像构建完成,可以查看镜像:docker images
镜像名为:anapsix/alpine-java是Dockerfile引用的镜像(源镜像)
4. 生产容器
docker run -itd --name xxx_test -p 8083:8082 xxx_test:v1
-d:后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
-p:指定端口映射,格式为:主机(宿主)端口:容器端口。(如果不加端口映射可能会访问不到容器的应用)
--name: 指定容器名称
5. 查看容器日志
docker logs -f [容器id]
三、上传到仓库
1. 页面上传
打包成镜像文件:docker save xxx_test:v1 > test.tar
云镜像仓库页面上传镜像文件
2. docker客户端上传
参照云镜像仓库的说明,通常是三步:
>登录到仓库,
>给镜像打标签(包含仓库位置/组名/镜像:版本),
>推送到仓库
参考:
dockerfile:https://www.kancloud.cn/letao99/docker-install/1509214
解释详细:https://www.jianshu.com/p/e9e787805256
制作上传阿里云镜像全过程:https://blog.csdn.net/qq_35433926/article/details/95969980
内容很多,向docker拉取,最小化的jre 1.8的运行环境(anapsix/alpine-java):https://www.kancloud.cn/yami/mall4j/1250381
更多推荐