前置知识:Dockerfile的编写
见 Docker 基础之Dockerfile命令详解 ,后面也会解释一些Dockerfile命令的使用。
一、使用Dockerfile部署Java个人项目
本来想在一个CentOS容器内,同时开MySQL进程和Java进程,但是后来从网上看到一段话(李昊轩的博客):
遵循单一原则,一个容器只运行一个主进程。多个进程都部署在一个容器中,弊端很多。比如更新某个进程的镜像时,其他进程也会被迫重启,如果一个进程出问题导致容器挂了,所有进程都将无法访问。再根据官网的提倡的原则而言。容器 = 应用 + 依赖的执行环境而不是像虚拟机一样,把一堆进程都部署在一起。
因此只能放弃原先的方法,将数据库单独放在一个服务器里,只在Docker里面发布Jar进程。
下面是Dockerfile的编写:
FROM java:8
LABEL Creator="daji"
LABEL description="DajiBlog_SpringBoot_Docker"
ENV MYPATH /root
WORKDIR $MYPATH
COPY *.jar $MYPATH/DajiBlog.jar
CMD ["--server.port=8080"]
RUN touch log.log
EXPOSE 8080
ENTRYPOINT ["java","-jar","DajiBlog.jar",">","log.log","&"]
cd到Dockerfile所在的路径,在终端执行命令:docker build -f Dockerfile -t dajiblog:1.0 . 可以构建镜像;
在终端执行命令: docker run -d --name dajiblog01 -p 20001:8080 dajiblog:1.0 可以启动该镜像,把主机的端口20001链接到容器端口8080.
在终端执行命令:docker logs -f dajiblog01 可以查看该容器输出的日志
执行完毕后,输入ip地址+端口号,访问你部署的Java个人项目,如果访问成功,那么就说明部署成功了
二、发布你的Docker镜像到Dockerhub
首先在Dockerhub上注册你的账号:https://hub.docker.com/ 然后进入终端,输入命令:docker login -u 你的用户名
登陆成功后,在推送前,必须将你的镜像命名规范格式,否则会失败。输入如下命令 : docker tag 镜像id 你的docker账户名/新的镜像名:版本号 例:docker tag c3e2d1273618 dajitop/dajiblog:1.0
规范格式后可以推送镜像:docker push 用户名/镜像名:标签(版本号) 例:docker push dajitop/dajiblog:1.0
[root@iZuf6f6nspevrmhaq7hn23Z dockerfileforDajiblog]
The push refers to repository [docker.io/dajitop/dajiblog]
7c4fef873c58: Pushed
ec800912f8bd: Pushed
35c20f26d188: Mounted from library/java
c3fe59dd9556: Mounted from library/java
6ed1a81ba5b6: Mounted from library/java
a3483ce177ce: Mounted from library/java
ce6c8756685b: Mounted from library/java
30339f20ced0: Mounted from library/java
0eb22bfb707d: Mounted from library/java
a2ae92ffcd29: Mounted from library/java
1.0: digest: sha256:3a8024d82a4ff284143df7952520419b7bdd0a6a46e0a5861d1f6b5e894e7def size: 2419
push成功之后,登录https://hub.docker.com/,你就可以查看到你刚push上去的镜像了: 如果你想在别的终端Linux上面下载你的镜像,只需要docker pull 你的镜像名即可。例:
[root@iZuf6f6nspevrmhaq7hn23Z dockerfileforDajiblog]
1.0: Pulling from dajitop/dajiblog
5040bd298390: Already exists
fce5728aad85: Already exists
76610ec20bf5: Already exists
60170fec2151: Already exists
e98f73de8f0d: Already exists
11f7af24ed9c: Already exists
49e2d6393f32: Already exists
bb9cdec9c7f3: Already exists
b52b27b4154b: Pull complete
b9717b5af332: Pull complete
Digest: sha256:3a8024d82a4ff284143df7952520419b7bdd0a6a46e0a5861d1f6b5e894e7def
Status: Downloaded newer image for dajitop/dajiblog:1.0
docker.io/dajitop/dajiblog:1.0
执行完毕后,查看你的镜像列表,发现已经下载下来了: 完成!
|