1、目标

  • 以ContOS镜像为基础镜像,自定义一个tomcat9的镜像。
  • 镜像可以正常运行,外界可以访问。
  • 与宿主机与tomcat9之间配置挂载。
  • 部署一个简单的WEB项目,外界可以访问。

2、准备

准备tomcat压缩包,因为tomcat的运行需要JDK,所以也需要JDK8的压缩包。

如下:

  • apache-tomcat-9.0.44.tar.gz
  • jdk-8u11-linux-x64.tar.gz

都上传到服务器的/home/mydockerfile/tomcat9目录中。

/home/mydockerfile/tomcat9
[root@192 tomcat9]# ll
总用量 166516
-rw-r--r--. 1 root root 11487016 3月 21 00:18 apache-tomcat-9.0.44.tar.gz
-rw-r--r--. 1 root root 159019376 3月 21 00:18 jdk-8u11-linux-x64.tar.gz

创建一个readme.txt文件,用于之后的宿主机与容器之间的拷贝。

创建一个Dockerfile文件,就命名为Dockerfile

[root@192 tomcat9]# touch readme.txt
[root@192 tomcat9]# touch Dockerfile
[root@192 tomcat9]# ll
总用量 166516
-rw-r--r--. 1 root root 11487016 3月 21 00:18 apache-tomcat-9.0.44.tar.gz
-rw-r--r--. 1 root root 0 3月 21 00:39 Dockerfile
-rw-r--r--. 1 root root 159019376 3月 21 00:18 jdk-8u11-linux-x64.tar.gz
-rw-r--r--. 1 root root 0 3月 21 00:39 readme.txt

提示:Dockerfile文件,官方推荐命名为Dockerfile,在使用docker build命令的时候,会自动去寻找这个Dockerfile文件,就不需要在用-f参数指定Dockerfile文件的位置了。

3、编写Dockerfile文件

Dockerfile文件配置内容如下:

FROM centos
MAINTAINER wukong<wukong6688@126.com> # 把宿主机当前上下文的readme.txt拷贝到容器/usr/local/路径下
# 并把readme.txt文件重命名cincontainer.txt文件
COPY readme.txt /usr/local/cincontainer.txt # 把宿主机当前上下文的(也就是当前目录)java与tomcat安装包添加到容器中
ADD apache-tomcat-9.0.44.tar.gz /usr/local/
ADD jdk-8u11-linux-x64.tar.gz /usr/local/ # 安装vim编辑器
RUN yum -y install vim # 设置工作访问时候的MORKDIR路径,登录DE 落脚点
ENV MYPATH /usr/local
WORKDIR $MYPATH # 配置java与tomcat环境变量
# 配置java环境
ENV JAVA_HOME /usr/local/jdk1.8.0_11
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar # 通过冒号隔开
# 配置tomcat环境
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.44
ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.44
# 把上面配置的环境放入到PATH环境变量中
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin # 容器运行时监听的端口(暴露端口)
EXPOSE 8080 # 启动时运行tomcat
# ENTRYPOINT ["/usr/local/apache-tomcat-9.0.44/bin/startup.sh"]
# CMD ["/usr/local/apache-tomcat-9.0.44/bin/catalina.sh","run"]
CMD /usr/local/apache-tomcat-9.0.44/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.44/bin/logs/catalina.out
# && 表示拼接下一条命令,可以无线的拼接。

4、构建镜像

执行命令:docker build -t diytomcat9 .

# 因为我的Dockerfile文件的名字为Dockerfile,所以不用-f指定。
[root@192 tomcat9]# docker build -t diytomcat9 .
Sending build context to Docker daemon 170.5MB
Step 1/15 : FROM centos
---> 300e315adb2f
Step 2/15 : MAINTAINER wukong<wukong6688@126.com>
---> Running in 221cc10c9504
Removing intermediate container 221cc10c9504
---> 797f5aef897a
Step 3/15 : COPY readme.txt /usr/local/cincontainer.txt
---> 6797005a229e
Step 4/15 : ADD apache-tomcat-9.0.44.tar.gz /usr/local/
---> f4d05cb84de6
Step 5/15 : ADD jdk-8u11-linux-x64.tar.gz /usr/local/
---> 2c18597493ed
Step 6/15 : RUN yum -y install vim
---> Running in 7cb17ddf6345
CentOS Linux 8 - AppStream 2.1 MB/s | 6.3 MB 00:02
CentOS Linux 8 - BaseOS 1.9 MB/s | 2.3 MB 00:01
CentOS Linux 8 - Extras 9.0 kB/s | 9.2 kB 00:01
Dependencies resolved.
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
vim-enhanced x86_64 2:8.0.1763-15.el8 appstream 1.4 M
Installing dependencies:
gpm-libs x86_64 1.20.7-15.el8 appstream 39 k
vim-common x86_64 2:8.0.1763-15.el8 appstream 6.3 M
vim-filesystem noarch 2:8.0.1763-15.el8 appstream 48 k
which x86_64 2.21-12.el8 baseos 49 k Transaction Summary
================================================================================
Install 5 Packages Total download size: 7.8 M
Installed size: 30 M
Downloading Packages:
(1/5): gpm-libs-1.20.7-15.el8.x86_64.rpm 224 kB/s | 39 kB 00:00
(2/5): vim-filesystem-8.0.1763-15.el8.noarch.rp 328 kB/s | 48 kB 00:00
(3/5): which-2.21-12.el8.x86_64.rpm 342 kB/s | 49 kB 00:00
(4/5): vim-enhanced-8.0.1763-15.el8.x86_64.rpm 2.5 MB/s | 1.4 MB 00:00
(5/5): vim-common-8.0.1763-15.el8.x86_64.rpm 6.0 MB/s | 6.3 MB 00:01
--------------------------------------------------------------------------------
Total 3.7 MB/s | 7.8 MB 00:02
warning: /var/cache/dnf/appstream-02e86d1c976ab532/packages/gpm-libs-1.20.7-15.el8.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 8483c65d: NOKEY
CentOS Linux 8 - AppStream 232 kB/s | 1.6 kB 00:00
Importing GPG key 0x8483C65D:
Userid : "CentOS (CentOS Official Signing Key) <security@centos.org>"
Fingerprint: 99DB 70FA E1D7 CE22 7FB6 4882 05B5 55B3 8483 C65D
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
Key imported successfully
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : which-2.21-12.el8.x86_64 1/5
Installing : vim-filesystem-2:8.0.1763-15.el8.noarch 2/5
Installing : vim-common-2:8.0.1763-15.el8.x86_64 3/5
Installing : gpm-libs-1.20.7-15.el8.x86_64 4/5
Running scriptlet: gpm-libs-1.20.7-15.el8.x86_64 4/5
Installing : vim-enhanced-2:8.0.1763-15.el8.x86_64 5/5
Running scriptlet: vim-enhanced-2:8.0.1763-15.el8.x86_64 5/5
Running scriptlet: vim-common-2:8.0.1763-15.el8.x86_64 5/5
Verifying : gpm-libs-1.20.7-15.el8.x86_64 1/5
Verifying : vim-common-2:8.0.1763-15.el8.x86_64 2/5
Verifying : vim-enhanced-2:8.0.1763-15.el8.x86_64 3/5
Verifying : vim-filesystem-2:8.0.1763-15.el8.noarch 4/5
Verifying : which-2.21-12.el8.x86_64 5/5 Installed:
gpm-libs-1.20.7-15.el8.x86_64 vim-common-2:8.0.1763-15.el8.x86_64
vim-enhanced-2:8.0.1763-15.el8.x86_64 vim-filesystem-2:8.0.1763-15.el8.noarch
which-2.21-12.el8.x86_64 Complete!
Removing intermediate container 7cb17ddf6345
---> 1dee8c82dc2c
Step 7/15 : ENV MYPATH /usr/local
---> Running in 1d5abe930a75
Removing intermediate container 1d5abe930a75
---> 970df33afcc8
Step 8/15 : WORKDIR $MYPATH
---> Running in 0580d08c8588
Removing intermediate container 0580d08c8588
---> 2e3126bbb258
Step 9/15 : ENV JAVA_HOME /usr/local/jdk1.8.0_11
---> Running in 440abce7bbf6
Removing intermediate container 440abce7bbf6
---> 075a1599971e
Step 10/15 : ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
---> Running in d85b8a9112bb
Removing intermediate container d85b8a9112bb
---> 3eb9c75d976f
Step 11/15 : ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.44
---> Running in 8de5817880b1
Removing intermediate container 8de5817880b1
---> 7be89ad718f3
Step 12/15 : ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.44
---> Running in 2ef1b3c43df0
Removing intermediate container 2ef1b3c43df0
---> b1f2bb8b9971
Step 13/15 : ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
---> Running in c088d27cac3b
Removing intermediate container c088d27cac3b
---> e86039cdf1c9
Step 14/15 : EXPOSE 8080
---> Running in f541217004bc
Removing intermediate container f541217004bc
---> 253c3aa2bbfa
Step 15/15 : CMD /usr/local/apache-tomcat-9.0.44/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.44/bin/logs/catalina.out
---> Running in b5ba1a9c9c7f
Removing intermediate container b5ba1a9c9c7f
---> 12988584a30e
Successfully built 12988584a30e
Successfully tagged diytomcat9:latest [root@192 tomcat9]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
diytomcat9 latest 12988584a30e 3 minutes ago 607MB
centos latest 300e315adb2f 3 months ago 209MB

此时我的diytomcat9镜像就再宿主机生成,该diytomcat9镜像自身带有tomcat9的运行时环境。当我们启动容器后,该容器就对外提供tomcat服务。

5、启动镜像

执行如下命令,启动diytomcat9镜像。

docker run -p 9090:8080 \
--name wukongtomcat \
-v /home/mydockerfile/tomcat9/test:/usr/local/apache-tomcat-9.0.44/webapps/test \
-v /home/mydockerfile/tomcat9/tomcatlogs:/usr/local/apache-tomcat-9.0.44/logs \
--privileged=true \
-d diytomcat9

提示:

Docker挂载主机目录的时候,如果Docker访问出现cannot open directory.:Permission denied问题。

解决办法:在挂载目录后多加一个--privileged=true参数即可。

演示:

# 查看本地Docker镜像
[root@192 tomcat9]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
diytomcat9 latest 12988584a30e 3 minutes ago 607MB
centos latest 300e315adb2f 3 months ago 209MB # 启动容器(以后工作中启动容器的命令要比这还多)
[root@192 tomcat9]# docker run -p 9090:8080 \
> --name wukongtomcat \
> -v /home/mydockerfile/tomcat9/test:/url/local/apache-tomcat-9.0.44/webapps/test \
> -v /home/mydockerfile/tomcat9/tomcatlogs:/url/local/apache-tomcat-9.0.44/logs \
> --privileged=true \
> -d diytomcat9
9d23344e364d80e773a55cf9c507b75a034a1900fdf0c98e27266d99ceb5b06d # 查看当前正在运行的容器
[root@192 tomcat9]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9d23344e364d diytomcat9 "/bin/sh -c '/usr/lo…" 11 seconds ago Up 9 seconds 0.0.0.0:9090->8080/tcp wukongtomcat

查看宿主机的挂载是否配置成功。

[root@192 tomcat9]# pwd
/home/mydockerfile/tomcat9
[root@192 tomcat9]# ll
总用量 166520
-rw-r--r--. 1 root root 11487016 3月 21 00:18 apache-tomcat-9.0.44.tar.gz
-rw-r--r--. 1 root root 643 3月 21 01:46 Dockerfile
-rw-r--r--. 1 root root 159019376 3月 21 00:18 jdk-8u11-linux-x64.tar.gz
-rw-r--r--. 1 root root 0 3月 21 00:39 readme.txt
drwxr-xr-x. 2 root root 6 3月 21 01:58 test # 这里
drwxr-xr-x. 2 root root 6 3月 21 01:58 tomcatlogs # 这里

说明数据卷挂载成功。

接下来我们查看宿主机上传的文件是否存在,还有容器的中的运行环境。

# 查看/usr/local/目录中的内容
# 发现我们上传的cincontainer.txt和tomcat、jdk都有,没有问题。
[root@192 tomcat9]# docker exec wukongtomcat ls -l
total 0
drwxr-xr-x. 1 root root 45 Mar 20 17:47 apache-tomcat-9.0.44
drwxr-xr-x. 2 root root 6 Nov 3 15:22 bin
-rw-r--r--. 1 root root 0 Mar 20 16:39 cincontainer.txt
drwxr-xr-x. 2 root root 6 Nov 3 15:22 etc
drwxr-xr-x. 2 root root 6 Nov 3 15:22 games
drwxr-xr-x. 2 root root 6 Nov 3 15:22 include
drwxr-xr-x. 8 10 143 255 Jun 17 2014 jdk1.8.0_11
drwxr-xr-x. 2 root root 6 Nov 3 15:22 lib
drwxr-xr-x. 3 root root 17 Dec 4 17:37 lib64
drwxr-xr-x. 2 root root 6 Nov 3 15:22 libexec
drwxr-xr-x. 2 root root 6 Nov 3 15:22 sbin
drwxr-xr-x. 5 root root 49 Dec 4 17:37 share
drwxr-xr-x. 2 root root 6 Nov 3 15:22 src # 接下来我们查看一下java的版本
# 说明java的运行时环境是配置正常的。
[root@192 tomcat9]# docker exec wukongtomcat java -version
java version "1.8.0_11"
Java(TM) SE Runtime Environment (build 1.8.0_11-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.11-b03, mixed mode) # 如果还想进行其他的验证,可以自己去执行。

6、验证容器是否能够访问

我们可以使用curl命令进行本地访问。

也可以使用外部浏览器进行访问。

我们在浏览器中输入:http://192.168.134.129:9090/,看是否能够查看到Tomcat的欢迎界面。

7、向容器中部署WEB项目,同时验证数据卷挂载

我们通过容器启动命令,先来说明一下tomcat9镜像部署项目的原理。

docker run -p 9090:8080 \
--name wukongtomcat \
-v /home/mydockerfile/tomcat9/test:/usr/local/apache-tomcat-9.0.44/webapps/test \
-v /home/mydockerfile/tomcat9/tomcatlogs:/usr/local/apache-tomcat-9.0.44/logs \
--privileged=true \
-d diytomcat9

说明:

  • 宿主机的/home/mydockerfile/tomcat9/test目录和容器中/usr/local/apache-tomcat-9.0.44/webapps/test目录是挂载的,也就是这两个目录中的内容是同步的。
  • 我们知道在Tomcat中webapps目录是发布项目工程的目录,所以test目录相当于一个项目工程。我在宿主机中把项目文件放入test目录中,会自动同步到容器中webapps目录的test目录中。这样我们就可以在宿主机本地,发布一个项目到容器中了。
  • 同理宿主机的/home/mydockerfile/tomcat9/tomcatlogs目录和容器中/usr/local/apache-tomcat-9.0.44/logs目录是挂载的,所以容器中Tomcat服务产生的日志,我们在宿主机上都可以查看到,并且持久化到了宿主机。

(1)准备一个简单的WEB项目

我们创建两个文件和一个文件夹放入宿主机的/home/mydockerfile/tomcat9/test

他们之间的目录结构如下:

web.xml文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5"> </web-app>

index.jsp文件内容如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>hello wukong ,hello docker</title>
</head>
<body>
Hello World!hello docker!
<br />
<% System.out.println("-----Congratulations--hello-docker----"); %>
</body>
</html>

(2)访问验证

我们在宿主机/home/mydockerfile/tomcat9/test目录中创建的文件,会自动同步到容器中/usr/local/apache-tomcat-9.0.44/webapps/test目录里。

这时我们可以直接在浏览器中访问http://192.168.134.129:9090/test,查看一下是否能够访问成功。

提示:可以docker restart重启一下容器。

访问成功。

我们也可以在宿主机中查看tomcat容器的tomcat服务日志。

# 查看当前工作目录
[root@192 tomcatlogs]# pwd
/home/mydockerfile/tomcat9/tomcatlogs # 查看当前目录文件
[root@192 tomcatlogs]# ll
总用量 48
-rw-r-----. 1 root root 6286 3月 21 03:47 catalina.2021-03-20.log
-rw-r-----. 1 root root 6289 3月 21 12:23 catalina.2021-03-21.log
-rw-r-----. 1 root root 12631 3月 21 12:48 catalina.out
-rw-r-----. 1 root root 0 3月 21 03:47 host-manager.2021-03-20.log
-rw-r-----. 1 root root 0 3月 21 12:23 host-manager.2021-03-21.log
-rw-r-----. 1 root root 408 3月 21 03:47 localhost.2021-03-20.log
-rw-r-----. 1 root root 408 3月 21 12:23 localhost.2021-03-21.log
-rw-r-----. 1 root root 225 3月 21 03:48 localhost_access_log.2021-03-20.txt
-rw-r-----. 1 root root 225 3月 21 12:48 localhost_access_log.2021-03-21.txt
-rw-r-----. 1 root root 0 3月 21 03:47 manager.2021-03-20.log
-rw-r-----. 1 root root 0 3月 21 12:23 manager.2021-03-21.log # 查看tomcat日志
[root@192 tomcatlogs]# cat catalina.out
... #省略
-----Congratulations--hello-docker----
-----Congratulations--hello-docker----
-----Congratulations--hello-docker----
-----Congratulations--hello-docker----
[root@192 tomcatlogs]#

容器是正常运行的,相关文件都可以查看到,证明我们的tomcat9镜像配置没有问题。

我们以后开发的步骤:需要掌握Dokcerfile的编写,之后的一切都是使用Docker镜像来发布运行!

『现学现忘』Docker基础 — 39、实战:自定义Tomcat9镜像的更多相关文章

  1. 『现学现忘』Docker基础 — 41、将本地镜像推送到阿里云

    目录 1.准备工作 2.阿里云容器镜像仓库的使用 (1)创建命名空间 (2)创建容器镜像 (3)查看阿里云镜像仓库的信息 3.将本地Docker镜像推送到阿里云 (1)登陆阿里云 (2)给镜像生成版本 ...

  2. 『现学现忘』Docker基础 — 9、Docker简介

    目录 1.什么是Docker? 2.Docker的出现解决了什么问题? 3.Docker的特别之处 4.Docker相关网站 1.什么是Docker? 2010年dotCloud公司在旧金山成立,PA ...

  3. 『现学现忘』Docker基础 — 16、Docker中的基本概念和底层原理

    目录 1.Docker的底层原理 2.Docker中常用的基本概念 3.run命令的运行流程 4.为什么Docker比VM快 Docker架构图: 我们依照Docker架构图进行Docker基础概念的 ...

  4. 『现学现忘』Docker基础 — 27、Docker镜像的commit操作

    目录 1.commit命令作用 2.commit命令说明 3.示例演示 1.commit命令作用 在运行的容器中,并在镜像的基础上做了一些修改,我们希望保存起来,封装成一个新的镜像,方便我们以后使用, ...

  5. 『现学现忘』Docker基础 — 28、Docker容器数据卷介绍

    目录 1.什么是Docker容器数据卷 2.数据卷的作用 3.数据卷的使用 1.什么是Docker容器数据卷 Docker容器数据卷,即Docker Volume(卷). 当Docker容器运行的时候 ...

  6. 『现学现忘』Docker基础 — 34、DockerFile文件详解

    目录 1.DockerFile文件说明 2.Dockerfile构建过程解析 (1)Docker容器构建三步骤 (2)Dockerfile文件的基本结构 (3)Dockerfile注意事项 (4)Do ...

  7. 『现学现忘』Docker基础 — 35、实战:自定义CentOS镜像

    目录 1.前提说明 2.编写Dockerfile文件 3.构建镜像 4.运行镜像 5.列出镜像的变更历史 1)目标:自定义镜像wokong_centos. 2)所用到的保留字指令: FROM:基础镜像 ...

  8. 『现学现忘』Docker基础 — 23、使用Docker安装Tomcat

    目录 步骤1:搜索镜像 步骤2:下载Tomcat镜像 步骤3:运行Tomcat镜像 步骤4:本机和外网测试 步骤5:解决问题 补充:--rm选项 步骤1:搜索镜像 使用docker search命令进 ...

  9. 『现学现忘』Docker基础 — 33、Docker数据卷容器的说明与共享数据原理

    目录 1.数据卷容器的说明 2.数据卷容器共享数据原理 3.总结 4.练习:MySQL实现数据共享 1.数据卷容器的说明 (1)什么是数据卷容器 一个容器中已经创建好的数据卷,其它容器通过这个容器实现 ...

随机推荐

  1. Fastjson JdbcRowSetImpl利用链学习

    JdbcRowSetImpl 接着继续学习fastjson的第二条链JdbcRowSetImpl,主要是利用jndi注入达到的攻击,而且没有什么利用限制,而且其原理就是setter的自动调用,具体se ...

  2. R语言_格兰因果检验

    #当前文件路径 getwd() #设置当前路径,注意转译 setwd("C://Users//Administrator//Desktop//R_test") #导入数据 data ...

  3. 利用QEMU+GDB搭建Linux内核调试环境

    前言 对用户态进程,利用gdb调试代码是很方便的手段.而对于内核态的问题,可以利用crash等工具基于coredump文件进行调试. 其实我们也可以利用一些手段对Linux内核代码进行gdb调试,qe ...

  4. XCTF练习题---MISC---misc_pic_again

    XCTF练习题---MISC---misc_pic_again flag:hctf{scxdc3tok3yb0ard4g41n~~~} 解题步骤: 1.观察题目,下载附件 2.拿到手是一张图片,直接上 ...

  5. CoreWCF 1.0 正式发布,支持 .NET Core 和 .NET 5+ 的 WCF

    CoreWCF 1.0 正式发布,支持 .NET Core 和 .NET 5+ 的 WCF https://devblogs.microsoft.com/dotnet/corewcf-v1-relea ...

  6. C++实现矩阵类和向量类

    C++期末作业内容,写完之后觉得过于臃肿,又重新搞了个新的.新的当作业交,旧的拿来给同学参考. [问题描述]请仿照复数类,设计一个矩阵类,设计矩阵类的构成元素 1.编写构造函数完成初始化 2.编写成员 ...

  7. resultMap,日志,分页

    问题:属性名和字段名不一致 解决方法 起别名 select id, username, password as pwd from db4.user resultMap结果集映射 id username ...

  8. 那些年你啃过的ConcurrentHashMap

    前言 我是fancy,一个年纪轻轻bug量就累计到3200个的程序员,同事们都夸我一个人养活了整个测试组. 最近迷上了并发编程.并发这玩意怎么说呢,就是你平时工作用不到,一用就用在面试上.这不,又卷起 ...

  9. 五、redis哨兵两套环境同一局域网容灾切换问题

    上周遇到个灵异事件,实验室有两套环境来搭建redis集群和哨兵,分别是: 第一套环境IP:67(master) 65(salve) 66(salve)第二套环境IP:115(master) 116(s ...

  10. 基于SqlSugar的开发框架循序渐进介绍(4)-- 在数据访问基类中对GUID主键进行自动赋值处理

    我们在设计数据库表的时候,往往为了方便,主键ID一般采用字符串类型或者GUID类型,这样对于数据库表记录的迁移非常方便,而且有时候可以在处理关联记录的时候,提前对应的ID值.但有时候进行数据记录插入的 ...