虚拟机系统:CentOS 7
连接虚拟机工具:MobaXterm
以下在安装好虚拟机和docker基础上操作。
安装docker:【Docker】-- 如何安装docker-CSDN博客
一、部署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