root@docker project_exam_system\]# ls
web
\[root@docker project_exam_system\]# ls web/
dist
\[root@docker project_exam_system\]# ls web/dist/
assets favicon.ico index.html
vi /etc/hosts
192.168.8.196 bu.yuanyu.zhangmin
sudo echo "192.168.8.196 bu.yuanyu.zhangmin" >> /etc/hosts
后端
(1)上传包
(2)创建容器
root@docker \~\]# docker run -it centos:latest /bin/bash
\[root@573bb9975f03 /\]# ls
bin etc lib lost+found mnt proc run srv tmp var
dev home lib64 media opt root sbin sys usr
\[root@573bb9975f03 /\]# \[root@docker \~\]#
root@docker \~\]# docker attach 57
```Delphi
[root@573bb9975f03 /]# ls
Project_ExamSystem-V1.0.0.war lib64 sbin
application.properties lost+found srv
bin media sys
dev mnt tmp
etc opt usr
home proc var
jdk-17_linux-x64_bin.tar.gz root
lib run
```
(5)创建jdk解压目录
root@573bb9975f03 /\]# mkdir /usr/local/jdk
(6)解压jdk包
root@573bb9975f03 /\]# tar -xzvf jdk-17_linux-x64_bin.tar.gz -C /usr/local/jdk/ --strip-components=1
root@docker \~\]# cd project_exam_system/
\[root@docker project_exam_system\]# ls
mysql project_exam_system.sql web
\[root@docker project_exam_system\]# rm -rf mysql/
\[root@docker project_exam_system\]# mkdir mysql
\[root@docker project_exam_system\]# mv project_exam_system.sql mysql/
\[root@docker project_exam_system\]# head mysql/project_exam_system.sql
```bash
create database if not exists project_exam_system charset utf8mb4;
use project_exam_system;
/*
Navicat MySQL Data Transfer
Source Server : MySQL84
Source Server Type : MySQL
Source Server Version : 80400
Source Host : localhost:3308
Source Schema : project_exam_system
```
(5)将sql文件上传到mysql容器中
root@docker \~\]# docker cp project_exam_system/mysql/project_exam_system.sql 40:/
Successfully copied 11MB to 40:/
\[root@docker \~\]# docker exec 40 ls
project_exam_system.sql

(6)使用exec指令访问数据库管理界面
#由于在java的配置文件中,访问数据库的账号和密码不是root,而是lxe
root@docker \~\]# docker exec -it 40 mysql -uroot -proot
```sql
mysql> show databases;
+---------------------+
| Database |
+---------------------+
| information_schema |
| mysql |
| performance_schema |
| project_exam_system |
| sys |
+---------------------+
5 rows in set (0.00 sec)
mysql> create user 'lxe'@'%' identified by 'lxe';
Query OK, 0 rows affected (0.00 sec)
mysql> grant all on *.* to 'lxe'@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
```

4、Dockerfile
创建java资源存放目录,并将所有资源文件移动到java目录中
root@docker \~\]# mkdir project_exam_system/java
\[root@docker \~\]# mv jdk-17_linux-x64_bin.tar.gz project_exam_system/java/
\[root@docker \~\]# mv application.properties project_exam_system/java/
\[root@docker \~\]# mv Project_ExamSystem-V1.0.0.war project_exam_system/java/
\[root@docker \~\]# tree -L 3 project_exam_system/
```Delphi
project_exam_system/
├── java
│ ├── application.properties
│ └── jdk-17_linux-x64_bin.tar.gz
├── mysql
│ └── project_exam_system.sql
└── web
└── dist
├── assets
├── favicon.ico
└── index.html
5 directories, 5 files
```
**编写Dockerfile文件**
\[root@docker \~\]# vim project_exam_system/java/Dockerfile
```Delphi
FROM centos:latest
ADD application.properties /application.properties
ADD jdk/ /usr/local/jdk
ADD Project_ExamSystem-V1.0.0.war /Project_ExamSystem-V1.0.0.war
ADD java.sh /java.sh
RUN chmod -v +x /java.sh
WORKDIR /
EXPOSE 8080
CMD [ "java.sh","/bin/bash" ]
```
**进入到java资源目录中并解压jdk,并改名**
\[root@docker \~\]# cd project_exam_system/java/
\[root@docker java\]# tar -xzvf jdk-17_linux-x64_bin.tar.gz
\[root@docker java\]# mv jdk-17.0.12/ jdk
**使用当前目录下的Dockerfile来构建一个名为java:v1的镜像。**
\[root@docker java\]# docker build -t java:v1 .
```Delphi
[root@docker java]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
java v1 541d15b51e02 58 seconds ago 591MB
```
\[root@docker java\]# vim java.sh
```Delphi
#!/bib/bash
/usr/local/jdk/bin/java -jar Project_ExamSystem-v1.0.0.war
```
**根据java:v1镜像创建容器**
\[root@docker java\]# docker run -it -p8081:8080 java:v1 /bin/bash
\[root@1ef5404323e8 /\]# ls
```Delphi
Project_ExamSystem-V1.0.0.war home media run usr
application.properties java.sh mnt sbin var
bin lib opt srv
dev lib64 proc sys
etc lost+found root tmp
```
\[root@1ef5404323e8 /\]# /usr/local/jdk/bin/java -jar Project_ExamSystem-V1.0.0.war
\[root@docker java\]# docker exec 1ef ss -anut\| grep 8080
```Delphi
tcp LISTEN 0 128 *:8080 *:*
```