做网站需要哪些东西和步骤,零食网站策划书,网站你懂我意思正能量免费,一些做的好的网站目录 前言
1. 初识DockerCompose
2. 安装DockerCompose
3. 部署微服务项目
1#xff09;找一个目录#xff0c;创建一个新的cloud-demo文件夹。
2#xff09;在cloud-demo文件夹创建一个docker-compose.yml文件#xff0c;然后编写下面内容#xff1a;
3#xff09…目录 前言
1. 初识DockerCompose
2. 安装DockerCompose
3. 部署微服务项目
1找一个目录创建一个新的cloud-demo文件夹。
2在cloud-demo文件夹创建一个docker-compose.yml文件然后编写下面内容
3在cloud-demo下创建以mysql、user-service、gate-way、order-service命名的文件夹用于存放部署时要用到的东西
4 因为要给mysql挂载一个配置文件和一个本地数据所以在mysql文件夹里创建conf和data目录
5在mysql的conf文件夹里创建hmy.cnf文件 6将本地的mysql的data数据复制到cloud-demo/mysql/data下面
7将之前没编写完的docker-compose文件把mysql的数据卷的挂载信息写上
8 在gateway目录下新建Dockerfile文件内容如下
9使用maven打包工具将项目中的每个微服务都打包为app.jar我的就是gateway、order-service和user-service
10将docker-compose.yml文件补全
11将整个cloud-demo上传到虚拟机的任意目录下面我这里的是上传到/tmp目录下面
4. 如果mysql密码不一致如何解决 前言
Docker Compose可以基于Compose文件帮我们快速的部署分布式应用而无需手动一个个创建和运行容器。 1. 初识DockerCompose
Compose文件是一个YAML文本文件通过指令定义集群中的每个容器如何运行。示例如下
version: 3.8services:mysql:image: mysql:5.7.25environment:MYSQL_ROOT_PASSWORD: 123456volumes:- /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 DockerCompose的详细语法参考官网https://docs.docker.com/compose/compose-file/。
其实DockerCompose文件可以看作是将多个docker run命令写到一个文件只是语法稍有差异。
2. 安装DockerCompose
我的CentOS7安装Docker里面有详细操作。
3. 部署微服务项目
需求将自己的cloud-demo微服务项目利用DockerCompose部署
步骤
1找一个目录创建一个新的cloud-demo文件夹。 2在cloud-demo文件夹创建一个docker-compose.yml文件然后编写下面内容 我这里用到的微服务只有user-service、order-service和gateway。因为feign-api是自己独立出来的一个模块没有对外暴露的接口供自己项目依赖引用的后续打包userservice或orderservice的时候会作为依赖打包进去所以不需要在docker-compose文件中写出来这里已经用到了nacos所以eureka-service也不用了。
3在cloud-demo下创建以mysql、user-service、gate-way、order-service命名的文件夹用于存放部署时要用到的东西 4 因为要给mysql挂载一个配置文件和一个本地数据所以在mysql文件夹里创建conf和data目录 5在mysql的conf文件夹里创建hmy.cnf文件 内容如下
[mysqld]
skip-name-resolve
character_set_serverutf8
datadir/var/lib/mysql
server-id1000 skip-name-resolve这个配置项告诉 MySQL 服务器在用户登录时不要进行域名解析可以提高连接速度。character_set_serverutf8表示服务器端使用的字符集为 utf8这是为了确保数据的正确存储和检索datadir/var/lib/mysql这个配置项指定了 MySQL 数据库文件的存储路径即数据库的数据文件将存储在 /var/lib/mysql 目录下server-id1000这个配置项指定了 MySQL 服务器的唯一标识号用于在主从复制等场景中识别不同的服务器 6将本地的mysql的data数据复制到cloud-demo/mysql/data下面 这里面包括了我这次要部署的项目需要用到的cloud-order和cloud-user库也包括了安装本地数据库时设置的root的用户信息以及全部权限信息所以找到本地数据库的数据存储目录最好一起拷贝过来另外docker-compose文件里面写的mysql的root密码一定要跟本地的root密码一致不然docker部署之后会出现很多意想不到的问题问就是我踩过这个坑。
7将之前没编写完的docker-compose文件把mysql的数据卷的挂载信息写上 后续我们启动docker-compose的时候是在docker-compose.yml文件的目录下启动的后续不管把这里的cloud-demo上传到虚拟机的哪个目录都能通过$PWD这个命令找到当前目录保证我们写的配置文件以及本地环境的数据环境能够在mysql镜像中能使用。
8 在gateway目录下新建Dockerfile文件内容如下
FROM java:8-alpine
COPY ./app.jar /tmp/app.jar
ENTRYPOINT java -jar /tmp/app.jar
这就是一个自定义的镜像文件。然后把这个文件在user-service和order-service文件夹中各拷贝一份。
9使用maven打包工具将项目中的每个微服务都打包为app.jar我的就是gateway、order-service和user-service
在上面上个微服务的pom文件中加上下面的内容就可以这里的filename指的就是将微服务打包成app.jar。
buildfinalNameapp/finalNamepluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins
/build 打包好之后将这里的app.jar包复制到各自对应的文件夹下面。 10将docker-compose.yml文件补全 docker-compose.yml文件到这里就全部写完了全部内容如下
version: 3.2 # docker-compose 文件格式版本
services:nacos:image: nacos/nacos-server # 指定的使用镜像如果本地或虚拟机里没有会自动从远程仓库拉取我这里没有指定nacos-server的版本号所以会去拉取最新版本environment:MODE: standaloneports:- 8848:8848mysql:image: mysql:5.7.25 # 指定使用的mysql镜像我这里指定了版本是因为跟我本地保持一致后续数据卷映射的时候需要使用到本地的mysql数据文件environment:MYSQL_ROOT_PASSWORD: 123456 # 设置镜像mysql的root密码跟本地保持一致后续用到本地数据的时候不会报错volumes:- $PWD/mysql/data:/var/lib/mysql # 数据卷映射把本地的mysql/data目录挂载到镜像的/var/lib/mysql目录下这样我们本地的数据文件在镜像里也是存在的其中$PWD表示当前目录- $PWD/mysql/conf:/etc/mysql/conf.d/ # 同上把本地的mysql/conf目录挂载到镜像的/etc/mysql/conf.d/目录下这样我们本地的配置文件在镜像里也是存在的userservice:build: ./user-service # 指定构建镜像的目录会自动去该目录下寻找Dockerfile文件然后构建镜像这里的./user-service表示去当前目录下的user-service目录找Dockerfile文件orderservice:build: ./order-servicegateway:build: ./gatewayports:- 10010:10010
11将整个cloud-demo上传到虚拟机的任意目录下面我这里的是上传到/tmp目录下面 然后进入docker-compose.yml文件目录下/tmp/cloud-demo运行命令
docker-compose up -d t通过命令docker ps可以看到启动的服务有哪些 服务都启动之后访问cloud-demo的对外接口http://虚拟机IP:10010/user/1?authorizationadmin可以得到结果 访问cloud-demo的对外接口http://虚拟机IP:10010/order/101?authorizationadmin可以得到结果 另外在服务部署的时候要善于使用docker-compose --help命令这里介绍了很多包括查看服务启动的日志等。
如果在部署过程中出现微服务注册到nacos里报错的话在确保nacos服务启动成功之后重启其他微服务就可以了。
4. 如果mysql密码不一致如何解决
如果mysql配置的密码和你的项目不一致先用下面命令进入mysql容器
docker exec -it 你的mysql容器名字
再通过下面命令进入mysql
mysql -u root -p 然后修改你的登录MySQL的登录密码下面的host%代表的是不止本地登录你可以先查查你的mysql的user表看看root的host是不是%还是localhost
update mysql.user set authentication_stringpassword(你的新密码) where user root and host %;flush privileges; 然后更新授予用户权限这里的root%指的就是user的host为%任意地方登录
grant all privileges on *.* to root% identified by root with grant option;flush privileges;
这样不管你是虚拟机登录还是外部浏览器访问微服务接口就都能调用数据库了。