一、 后端部署环境搭建
1.1 获取java8镜像
docker pull java:8
1.2 docker获取mysql镜像并映射到容器
1.在docker镜像仓库中查找mysql,根据需求安装指定版本(不指定版本默认安装最新版),博客里安装的为mysql-5.7:
1.2.1 获取mysql镜像
docker pull mysql:5.7
1.2.2 创建实例并启动
docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
配置说明
参数说明:
-p 3306:3306: 将容器的3306端口映射到主机的3306端口
-v /mydata/mysql/conf:/etc/mysql: 将配置文件夹挂载到主机
-v /mydata/mysql/log:/var/log/mysql: 将日志文件夹挂载到主机
-v /mydata/mysql/data:/var/lib/mysql: 将配置文件夹挂载到主机
-e MYSQL_ROOT_PASSWORD=root: 初始化root用户的密码
1.2.3 查看运行的容器
1.2.4 mysql配置
执行
vi /mydata/mysql/conf/my.cnf
增加如下配置:
[client]
default-character-set = utf8
[mysql]
default-character-set = utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
重启mysql容器
docker restart mysql
1.2.5 Navicat等图形管理界面等远程联机云服务器上的数据库
想要本地数据库图形化管理工具连接上远程的数据库,需要在数据库的用户表上的Host属性中将localhost本地环回地址改成 ‘ % ’是得允许其他IP以root用户的身份远程连接数据库,考虑安全性的话可将 ’ % ‘ 换成你自己电脑的IP地址。
查看正在运行的容器
docker ps
找到mysql5.7的进程号
ps: 进程号不用全部输入,一般输入前三四位就行
docker exec -it 5ac9 bash
进入容器后再进入数据库
输入以下命令
select * from mysql.user \G
会发现Root用户的Host的值为localhost,即仅支持本地连接数据库,不支持从自己的电脑远程连接到云服务器
更改root用户Host的值为 ‘%’使得可以远程访问数据库
update user set Host = '%' where Host = 'localhost' and user = 'root';
或
UPDATE `user` SET `Host` = '10.42.*.*' where `Host` = '10.42.*.*' and user = 'root';
授权用户表,添加远程ip访问权限
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'10.40.21.12' IDENTIFIED BY 'FJay' WITH GRANT OPTION;
更新Mysql配置
flush privileges;
1.3 配置Nacos注册与发现中心
1.3.1 拉取nacos镜像并启动
docker pull nacos/nacos-server
使用命令查看nacos镜像是否获取成功
docker images
将该镜像配置部署到docker容器中
docker run -d --name nacos -p 8848:8848 -e PREFER_HOST_MODE=hostname -e MODE=standalone nacos/nacos-server
默认用户名和密码都是nacos
上述方式是最简便的方式启动,但这样的话有一点小瑕疵,nacos所有元数据都会保存在容器内部。倘若容器迁移则nacos源数据则不复存在,所以通常我们通常会将nacos元数据保存在mysql中。下面附上配置方式:
修改配置文件
以下对于nacos的配置根据需求进行配置
#1 查看docker容器,nacos启动成功
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
容器号 nacos/nacos-server "bin/docker-startup.…" 4 minutes ago Up About a minute 0.0.0.0:8848->8848/tcp nacos
#2 进入容器
docker exec -it 容器号 /bin/bash
#3 修改 conf/application.properties 内容如下:
vi conf/application.properties
数据库脚本
application.properties 内容替换为
# spring
server.contextPath=/nacos
server.servlet.contextPath=/nacos
server.port=8848
management.metrics.export.elastic.enabled=false
management.metrics.export.influx.enabled=false
server.tomcat.accesslog.enabled=true
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i
server.tomcat.basedir=
nacos.security.ignore.urls=/,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/login,/v1/console/health/**,/v1/cs/**,/v1/ns/**,/v1/cmdb/**,/actuator/**,/v1/console/server/**
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://<ip>:<port>/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=password
退出容器
docker restart 容器号
二、后端项目部署
使用Xftp将文件传到自己想放的位置
部署后端项目需要两个文件一个是将项目打包后的’ .jar’ 文件一个是DockerFile配置文件
Dockerfile文件内容
FROM java:8
MAINTAINER bannai
ADD hncj_service4.jar demo.jar
EXPOSE 8181
ENTRYPOINT ["java","-jar","demo.jar"]
from java:8 拉取一个jdk为1.8的docker image
maintainer 作者是bannai
hncj_service4.jar 就是你上传的jar包,替换为jar包的名称
demo.jar 是你将该jar包重新命名为什么名称,在容器中运行
expose 该容器暴露的端口是多少,就是jar在容器中以多少端口运行
entrypoint 容器启动之后执行的命令,java -jar demo.jar 即启动jar
使用Xshell到上述两个文件所在的根目录下执行docker命令制作docker镜像
#hncj-serve是自己为自己制作的docekr镜像所命名的名字
docker build -t hncj-serve .
执行以下命令查看是否构建成功
docker images
执行docker命令制作docker容器
#cname是给将要创建的容器的命名,iname是容器所映射的镜像名字
#443是外部方位的接口,8181是容器内的接口
docker run -d -P --restart=always --name cname -p 443:8181 iname
执行docker ps 查看容器是否成功运行