一、 后端部署环境搭建

1.1 获取java8镜像

docker pull java:8

客户端上传镜像 镜像服务后端_mysql

1.2 docker获取mysql镜像并映射到容器

    1.在docker镜像仓库中查找mysql,根据需求安装指定版本(不指定版本默认安装最新版),博客里安装的为mysql-5.7:

1.2.1 获取mysql镜像

docker pull mysql:5.7

客户端上传镜像 镜像服务后端_jar_02

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用户的密码

客户端上传镜像 镜像服务后端_jar_03

1.2.3 查看运行的容器

客户端上传镜像 镜像服务后端_docker_04

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的进程号

客户端上传镜像 镜像服务后端_客户端上传镜像_05


ps: 进程号不用全部输入,一般输入前三四位就行

docker exec -it 5ac9 bash

进入容器后再进入数据库

客户端上传镜像 镜像服务后端_客户端上传镜像_06


输入以下命令

select * from mysql.user \G
会发现Root用户的Host的值为localhost,即仅支持本地连接数据库,不支持从自己的电脑远程连接到云服务器

客户端上传镜像 镜像服务后端_docker_07

更改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

客户端上传镜像 镜像服务后端_mysql_08

使用命令查看nacos镜像是否获取成功

docker images

将该镜像配置部署到docker容器中

docker run -d --name nacos -p 8848:8848 -e PREFER_HOST_MODE=hostname -e MODE=standalone nacos/nacos-server

默认用户名和密码都是nacos

客户端上传镜像 镜像服务后端_jar_09

    上述方式是最简便的方式启动,但这样的话有一点小瑕疵,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

数据库脚本

nacos-db.sql

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配置文件

客户端上传镜像 镜像服务后端_jar_10

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

客户端上传镜像 镜像服务后端_客户端上传镜像_11


执行docker命令制作docker容器

#cname是给将要创建的容器的命名,iname是容器所映射的镜像名字
#443是外部方位的接口,8181是容器内的接口
 docker run -d -P --restart=always --name cname -p 443:8181 iname

执行docker ps 查看容器是否成功运行

客户端上传镜像 镜像服务后端_客户端上传镜像_12