枚举
枚举是final,意味着它不能被继承,他的作用是用来限制输入的类型
1 | public enum MaterialType{ |
fsh的博客
枚举是final,意味着它不能被继承,他的作用是用来限制输入的类型
1 | public enum MaterialType{ |
SpringBoot有一个默认的视图“/error”来处理所有的异常,并且该视图注册成全局的错误页面在服务中,在客户端中他返回带有状态和错误码的json类型的响应。
To replace the default behavior completely, you can implement ErrorController and register a bean definition of that type or add a bean of type ErrorAttributes to use the existing mechanism but replace the contents.
You can also define a class annotated with @ControllerAdvice to customize the JSON document to return for a particular controller and/or exception type
1 | @ControllerAdvice(basePackageClasses = AcmeController.class) |
1 | # |
The JAR_FILE could be passed in as part of the docker command E.g. for Maven:
JAR_FILE可以作为docker命令的一部分传入,就是target/*.jar1
$ docker build --build-args=target/*.jar -t myorg/myapp .
如果你已经有了jar包则可以直接指定位置,来制作镜像1
2
3
4FROM openjdk:8-jdk-alpine
VOLUME /tmp
COPY target/*.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
现在我们可以简单的构建镜像1
$ docker build -t myorg/myapp .
然后运行1
$ docker run -p 80:8080 myorg/app
如果你像进入镜像查看可以输入1
2
3
4
5$ docker run -ti --entrypoint /bin/sh myorg/myapp
/ # ls
app.jar dev home media proc run srv tmp var
bin etc lib mnt root sbin sys usr
/ #
目前docker的配置非常简单,但是效率不高。docker镜像有一个简单文件系统分层放置jar包,每一次
对程序的改动都会影响到该层,肯能是10M或者更多。我们应该将jar分到其他层来改善这种情况。
上述构建镜像的基础镜像是:openjdk:8-jdk-alpine,这是一个比标准更为精简的镜像。然后你还可以使用“jre”而非
“jdk”来作为基础镜像可以省下20MB的空间,并不是说图像越小越好,小只是代表下载方便,前提是,他们的没有中间层被缓存
解压缩文件到target/depency目录,并构建docker镜像1
2
3$ mkdir target/dependency
$ (cd target/dependency; jar -xf ../*.jar)
$ docker build -t myorg/myapp .
构建镜像dockerFile1
2
3
4
5
6
7FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG DEPENDENCY=target/dependency
COPY ${DEPENDENCY}/BOOT-INF/lib /app/lib
COPY ${DEPENDENCY}/META-INF /app/META-INF
COPY ${DEPENDENCY}/BOOT-INF/classes /app
ENTRYPOINT ["java","-cp","app:app/lib/*","hello.Application"]
1 | FROM openjdk:8-jdk-alpine as build |
docker-compose的max-size选项来实现控制容器日志大小
1 | $ git init |
1 |
|
$ git remote
$ git remote add origin ssh://git@192.168.4.216:2222/FuShengHao/cmac-enterprise-server.git
$ git remote rename
$ git remote set-url
$ git remote remove `
$ git pull
$ git reset –hard 945060fd5a5c300075b5ad4ae045766ad46e0f4c
$ git checkout .
SSH协议 SSH密钥
md .ssh
兼容问题
ssh-keygen -t ed25519 -C “email@example.com“
ssh-keygen -o -t rsa -b 4096 -C “email@example.com“
1 | cat ~/.ssh/id_ed25519.pub | clip |
1 | eval "$(ssh-agent -s)" |
1 | # https://hub.docker.com/r/gitlab/gitlab-ce |
1 | sudo docker run --detach \ |
这里80端口被禁用,选择使用https默认端口访问
打开端口443以允许入站HTTPS流量
1 | # UFW example (Debian, Ubuntu) |
这里用的是腾讯企业邮箱
官方配置文档
1 | #gitlab.rb 内添加内容 |
gitlab_rails[‘gitlab_shell_ssh_port’] = 2222
1 | #时间较长 |
1 | #时间较长 |
Notify.test_email(‘邮箱地址’, ‘主题’, ‘摘要’).deliver_now
1 | exit |
使用Dockerfile 定制镜像
新建一个Dockerfile文件夹将资源全部转移到其中
新建Dockerfile文件,Dockerfile 支持 Shell 类的行尾添加 \ 的命令换行方式,以及行首 # 进行注释的格式
使用vi编辑Dockerfile1
2
3
4#在nginx镜像的基础上新建镜像
FROM nginx
#拷贝本地的web静态资源到nginx目录
COPY html /usr/share/nginx/html
在Dockerfile文件下运行1
2
3
4
5
6#制作镜像
$ docker build -t my-nginx-image/myapp .
#生成实例
$ docker run --name my-nginx-container -p 80:80 -d my-nginx-image/myapp
#以日志形式运行
$ docker run --name my-nginx-container -p 80:80 -v /web/nginxImage/nginx.conf:/etc/nginx/nginx.conf:ro -d my-nginx-image/myapp nginx-debug -g 'daemon off;'
docker run –name my-nginx-container -p 80:80 \
–volume /srv/nginx/nginx.conf:/etc/nginx/nginx.conf \
–volume /srv/nginx/html:/usr/share/nginx/html \
–volume /srv/nginx/log:/var/log/nginx \
-d nginx
Docker是一个容器平台,负责创建容器
Docker CE 支持以下版本的 Ubuntu 操作系统:
由于 apt 源(APT是一个客户/服务器系统)使用 HTTPS 以确保软件下载过程中不被篡改。因此,我们首先需要添加使用 HTTPS 传输的软件包以及 CA 证书。
1 | $ sudo apt-get update |
为了确认所下载软件包的合法性,需要添加软件源的 GPG 密钥。
1 | $curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add - |
然后,我们需要向 source.list 中添加 Docker 软件源
1 | $ sudo add-apt-repository \ |
更新 apt 软件包缓存,并安装 docker-ce:
1 | # 工具更新 |
鉴于国内网络问题,强烈建议使用国内源,官方源请在注释中查看。
1 | # https://registry.docker-cn.com |
将应用程序制作成镜像,通过Docker引擎将镜像生成容器,最后以容器的形式运行程序
用docker运行的首先是一个容器,SpringBoot就在这个容器中,容器由镜像生成
因此首先要解决的是如何生成应用程序的镜像文件
docker-compose.yaml来用Docker Compose编排文件
这是整合多容器直接的相互配合
如果是在windows环境下则需要安装Docker for Windows
systemctl start docker
systemctl stop docker
1 | docker tag d72169616e20 mysql:8.0.16 |
1 | docker build [选项] <上下文路径/URL/-> 下面的.路径为当前文件夹 |
1 | docker image ls |
8a965478d94d为DockerID
1 | # 基于镜像新建并启动 |
$ docker exec {DockerId} bin/bash
$ docker exec -it 名字 /bin/bash
$ docker exec -it mysql1 bash
$ docker attach (会导致容器停止)
$ exit
1 |
|
docker exec -it gitlab update-permissions
docker restart gitlab
docker logs -f {containerID}
docker logs –details {containerID}