虚拟机系统:CentOS 7
连接虚拟机工具:MobaXterm
以下在安装好虚拟机和docker基础上操作。
安装docker:【Docker】-- 如何安装docker-优快云博客
一、部署Mysql
1、安装mysql
docker中执行:
docker run -d \
--name mysql \
-p 3306:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123 \
mysql
效果如图:

解读:
docker run -d:创建并运行一个容器,-d则是让容器以后台进程运行
--name mysql: 给容器起个名字叫mysql,可以叫别的
-p 3306:3306: 设置端口映射。
容器是隔离环境,外界不可访问。但是可以将宿主机端口映射容器内到端口,当访问宿主机指定端口时,就是在访问容器内的端口了。
容器内端口往往是由容器内的进程决定,例如MySQL进程默认端口是3306,因此容器内端口一定是3306;而宿主机端口则可以任意指定,一般与容器内保持一致。
格式:
-p 宿主机端口:容器内端口,示例中就是将宿主机的3306映射到容器内的3306端口
-e TZ=Asia/Shanghai: 配置容器内进程运行时的一些参数
格式:
-e KEY=VALUE,KEY和VALUE都由容器内进程决定
TZ=Asia/Shanghai是设置时区;MYSQL_ROOT_PASSWORD=123是设置MySQL默认密码
mysql: 设置镜像名称,Docker会根据这个名字搜索并下载镜像
格式:
REPOSITORY:TAG,例如mysql:8.0,其中REPOSITORY可以理解为镜像名,TAG是版本号在未指定
TAG的情况下,默认是最新版本,也就是mysql:latest
2、数据库建表
使用SQLyog或者MySQLworkbench连接上虚拟机中的mysql,并建表。
二、自定义网络
1.首先通过命令创建一个网络
docker network create hmall

2.查看网络
docker network ls

3.让mysql加入该网络
注意,在加入网络时可以通过--alias给容器起别名 ,这样该网络内的其它容器可以用别名互相访问!
mysql容器,指定别名为db
docker network connect hmall mysql --alias db
三、部署java项目
1、打包项目
修改项目的application.yml文件,修改数据库连接配置为你的docker数据库名称和密码。

然后打包项目,编辑一个名为Dockerfile的文件,内容如下(注意修改):
# 基础镜像
FROM openjdk:11.0-jre-buster
# 设定时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 拷贝jar包
COPY 你的名称.jar /app.jar
# 入口
ENTRYPOINT ["java", "-jar", "/app.jar"]

然后将这两个文件上传到虚拟机的root目录下

2、部署项目
构建项目镜像
不指定tag,则默认为latest
docker build -t hmall .
查看镜像
docker images

创建并运行容器
并通过--network将其加入hmall网络,这样才能通过容器名访问mysql
docker run -d --name hmall -p 8080:8080 --network hmall hmall

以下信息表示有重名容器

输入以下删除后,再执行上述指令
docker rm -f hmall
最后,可以通过浏览器访问:http://你的虚拟机地址:8080/
四、部署前端
1、准备html
先准备一个nginx文件

包含:

html文件夹包含:两个不同的前端页面,一个是管理端页面,一个是用户页面

hmall-admin:

nginx.conf:需要对两个页面做代理
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/json;
sendfile on;
keepalive_timeout 65;
server {
listen 18080;
# 指定前端项目所在的位置
location / {
root /usr/share/nginx/html/hmall-portal;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location /api {
rewrite /api/(.*) /$1 break;
proxy_pass http://hmall:8080;
}
}
server {
listen 18081;
# 指定前端项目所在的位置
location / {
root /usr/share/nginx/html/hmall-admin;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location /api {
rewrite /api/(.*) /$1 break;
proxy_pass http://hmall:8080;
}
}
}
2、上传nginx到虚拟机

3、创建运行容器
docker run -d \
--name nginx \
-p 18080:18080 \
-p 18081:18081 \
-v /root/nginx/html:/usr/share/nginx/html \
-v /root/nginx/nginx.conf:/etc/nginx/nginx.conf \
--network hmall \
nginx

4、测试
输入:虚拟机ip:页面端口号
如:我的ip:192.168.37.129,页面端口号:18080
本文介绍了在CentOS7环境下使用Docker部署MySQL数据库,自定义网络,以及部署Java项目和前端应用的过程,包括使用MobaXterm连接,端口映射,网络配置和Nginx的代理设置。
2221

被折叠的 条评论
为什么被折叠?



