网站设计流程及制作流程,wordpress 远程 mysql,网站首页该怎么做,网页制作设计公司常见的镜像在DockerHub能找到#xff0c;但是我们自己写项目得自己构造镜像
1 镜像结构 作用#xff1a;提高复用性#xff0c;当应用需要更新时#xff0c;不再是整个系统重装进行更新 #xff0c;而是对需要更新的部分进行更新#xff0c;其他地方不动——这就是分…常见的镜像在DockerHub能找到但是我们自己写项目得自己构造镜像
1 镜像结构 作用提高复用性当应用需要更新时不再是整个系统重装进行更新 而是对需要更新的部分进行更新其他地方不动——这就是分层的好处 每做一次新的操作会产生新的一层
简单来说镜像就是在系统函数库、运行环境的基础上添加应用程序文件、配置文件然后合并后编写好的启动脚本镜像运行的入口一起形成的文件
所以说构建镜像就是实现上述打包过程 2 什么是Dockerfile
构建自定义镜像如果一个个文件去拷贝打包会非常麻烦
我们只需要告诉Docker我们镜像的组成结构需要哪些BaseImage、拷贝哪些依赖需要哪些启动脚本那么Docker将会帮助构建镜像
而DockerFile是一个文本文件里面的指令描述了要什么样的操作来构建镜像 更新详细语法说明请参考官网文档:Dockerfile reference | Docker Documentation
举例构建Java项目 步骤1.首先新建一个空文件夹docker-demo然后将文件拷贝到里面 步骤2.设置DockerFile中的内容利用DockerFile指令设置镜像的每一层内容就是函数库、依赖、环境啥的
# 指定基础镜像
FROM ubuntu:16.04
# 配置环境变量JDK的安装目录
ENV JAVA_DIR/usr/local# 拷贝jdk和java项目的包
COPY ./jdk8.tar.gz $JAVA_DIR/
COPY ./docker-demo.jar /tmp/docker-demo.jar# 安装JDK
RUN cd $JAVA_DIR \ tar -xf ./jdk8.tar.gz \ mv ./jdk1.8.0_144 ./java8# 配置环境变量
ENV JAVA_HOME$JAVA_DIR/java8
ENV PATH$PATH:$JAVA_HOME/bin# 暴露端口
EXPOSE 8090
# 入口java项目的启动命令
ENTRYPOINT java -jar /tmp/docker-demo.jar步骤3.然后我们在当前目录下 执行docker build命令创建镜像给到岛屿本地 步骤4进入docker-demo 将准备好的docker-demo上传到虚拟机任意目录然后进入docker-demo目录下 步骤5运行命令 docker build -t javaweb:1.0 .最后访问 http://192.168.XX.XXX:8090/hello/count其中的ip改成你的虚拟机ip 3 DockerCompose是什么以及其作用
1.DockerCompose是一个文本文件里面通过指令定义了每个容器如何运行的 2.DockerCompose可以快速部署多个容器而无需一个个docker run 不用端口是因为集群自己访问就行了所以端口不需要暴露
version: 3.8
services:mysql:image: mysql:5.7.25environment:MYSQL_ROOT_PASSWORD: 123 volumes:- /tmp/mysql/data:/var/lib/mysql- /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnfweb:build: .ports:- 8090:8090上面的Compose文件就描述一个项目其中包含两个容器
mysql一个基于mysql:5.7.25镜像构建的容器并且挂载了两个目录web一个基于docker build临时构建的镜像容器映射端口时8090 下面这个webbuild : . xxxx类似于1.用来用户主动自定义build镜像给到岛屿本地后面的.代表当前文件目录下build镜像 .然后后面的ports相当于docker run了生成容器
DockerCompose的详细语法参考官网:DockerCompose的详细语法
其实DockerCompose文件可以看做是将多个docker run命令写到一个文件只是语法稍有差异
4 安装DockerCompose
1.通过命令下载或者通过资料上传到/usr/lcoal/bin目录也行
# 安装
curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-uname -s-uname -m /usr/local/bin/docker-compose2.修改权限
# 修改权限
chmod x /usr/local/bin/docker-compose3.Base自动补全命令
# 补全命令
curl -L https://raw.githubusercontent.com/docker/compose/1.29.1/contrib/completion/bash/docker-compose /etc/bash_completion.d/docker-compose4.若出现错误
echo 199.232.88.XXX raw.githubusercontent.com /etc/hosts5 Compose部署微服务demo
Compose部署微服务demo 这里我们再复习一下DockerFIle
一种构建镜像最常用的方式包括基础镜像信息层层叠加维护更新容器启动指令镜像操作指令…
Docker从上到下顺序执行DockerFIle指令为了指定基本映象第一条指令时FROM
每条指令都会创建一个新的镜像层并对镜像进行提交
实现步骤
1.cloud项目需要打成jar包后放到各自服务的文件夹下同时还需要DockerFile文件分别代表
java8拷贝的app.jar文件启动脚本
内容如下
FROM java:8-alpine
COPY ./app.jar /tmp/app.jar
ENTRYPOINT java -jar /tmp/app.jar2.每个服务的DockerFile准备好后也就是镜像构建好我们还需要DockerCompose——目的是将多个镜像全部启动
version: 3.2services:nacos:image: nacos/nacos-serverenvironment:MODE: standaloneports:- 8848:8848mysql:image: mysql:5.7.25environment:MYSQL_ROOT_PASSWORD: 123volumes:- $PWD/mysql/data:/var/lib/mysql- $PWD/mysql/conf:/etc/mysql/conf.d/userservice:build: ./user-serviceorderservice:build: ./order-servicegateway:build: ./gatewayports:- 10010:10010可以看到其中包含5个service服务
nacos作为注册中心和配置中心 image: nacos/nacos-server 基于nacos/nacos-server镜像构建environment环境变量 MODE: standalone单点模式启动 ports端口映射这里暴露了8848端口 mysql数据库 image: mysql:5.7.25镜像版本是mysql:5.7.25environment环境变量 MYSQL_ROOT_PASSWORD: 123设置数据库root账户的密码为123 volumes数据卷挂载这里挂载了mysql的data、conf目录其中有我提前准备好的数据 userservice、orderservice、gateway都是基于Dockerfile临时构建的
查看mysql目录可以看到其中已经准备好了cloud_order、cloud_user表
需要注意的是: 因为微服务将来要部署为docker容器而容器之间互联不是通过IP地址而是通过容器名。这里我们将order-service、user-service、gateway服务的mysql、nacos地址都修改为基于容器名的访问。 如下所示
spring:datasource:url: jdbc:mysql://mysql:3306/cloud_order?useSSLfalseusername: rootpassword: 123456driver-class-name: com.mysql.jdbc.Driverapplication:name: orderservicecloud:nacos:server-addr: nacos:8848 # nacos服务地址3.部署
最后我们需要将文件整个cloud-demo文件夹上传到虚拟机中理由DockerCompose部署。
上传到任意目录
部署
进入cloud-demo目录然后运行下面的命令
docker-compose up -d