首页 > 其他 > 详细

微服务运行在 Docker 之上

时间:2021-02-21 23:46:40      阅读:48      评论:0      收藏:0      [点我收藏+]
  • Dockerfile 及其常见指令介绍
  • maven 插件打包镜像
  • Eureka Server 微服务运行在容器中

 

Dockerfile 及其常见指令介绍

Dockerfile 其实一个文本文件,其中包含了若干个符合 Docker 解析规范的指令,指令描述了构建镜像的步骤或者一些细节。

Nginx 小例子

首先,我们新建一个简单的 Dockerfile,文件名就叫做Dockerfile,其内容如下:

FROM nginx
RUN echo ‘<h1>SpringCloud-Docker</h1>‘ > /usr/share/nginx/html/index.html

上面的 Dockerfile 基于 nginx 镜像修改了 index.html 首页,首页显示SpringCloud-Docker内容。

我们可以通过 Docker 来构建此镜像并运行:

tom@ubuntu:~/Desktop/3/docker1$ sudo docker build -t nginx-demo .
Sending build context to Docker daemon 2.048kB
Step 1/2 : FROM nginx
latest: Pulling from library/nginx
45b42c59be33: Pull complete
8acc495f1d91: Pull complete
ec3bd7de90d7: Pull complete
19e2441aeeab: Pull complete
f5a38c5f8d4e: Pull complete
83500d851118: Pull complete
Digest: sha256:f3693fe50d5b1df1ecd315d54813a77afd56b0245a404055a946574deb6b34fc
Status: Downloaded newer image for nginx:latest
---> 35c43ace9216
Step 2/2 : RUN echo ‘<h1>SpringCloud-Docker</h1>‘ > /usr/share/nginx/html/index.html
---> Running in c8bb31f5043d
Removing intermediate container c8bb31f5043d
---> 16e25cfdf65d
Successfully built 16e25cfdf65d
Successfully tagged nginx-demo:latest

tom@ubuntu:~/Desktop/3/docker1$ sudo docker run -p 8080:80 nginx-demo
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
192.168.154.1 - - [21/Feb/2021:08:18:51 +0000] "GET / HTTP/1.1" 200 28 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36" "-"
2021/02/21 08:18:51 [error] 31#31: *1 open() "/usr/share/nginx/html/favicon.ico" failed (2: No such file or directory), client: 192.168.154.1, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "192.168.154.131:8080", referrer: "http://192.168.154.131:8080/"
192.168.154.1 - - [21/Feb/2021:08:18:51 +0000] "GET /favicon.ico HTTP/1.1" 404 555 "http://192.168.154.131:8080/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36" "-"

 

 

随后访问http://localhost:8080得到如下响应:

技术分享图片

或者控制台执行如下指令:

curl localhost:8080

响应如下:
<h1>SpringCloud-Docker</h1>常见指令
上面的 Dockerfile 提到了 FROM、RUN 指令。事实上,Dockerfile 有十多个指令,一般格式是:指令名称 参数。

FROM 指定基础镜像:FROM <image>:<tag>
比如基于 Java JDK 环境的镜像:openjdk:8-jre-alpine:latest

ADD 复制文件:ADD <src> <dest>
从src目录复制文件到容器的dest目录,其中 src 可以是 Dockerfile 所在目录的相对路径,也可以是一个 URL,还可以是一个压缩包。

COPY 复制文件:COPY <src> <dest>
COPY 和 ADD 指令类似,COPY 不支持 URL 的压缩包。

ENTRYPOINT 入口点:ENTRYPOINT command param1 param2

  

指定 Docker 容器启动时执行的命令。

更多指令可以参考官方文档,这里不一一讲解。接下来开始对我们前面的 Eureka Server 微服务进行改造,使其运行在 Docker 容器中。

 
 

微服务运行在 Docker 之上

原文:https://www.cnblogs.com/lzjloveit/p/14426136.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!