目录

一. dockerfile编写

 二、制作docker镜像

三、上传到仓库


一. 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

一些问题:docker使用的一些需要注意事项 - zygfengyuwuzu - 博客园

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐