From 0e24188586f875f3a7990296839cc6ffc38312ba Mon Sep 17 00:00:00 2001 From: oddfar Date: Sun, 6 Jun 2021 23:00:18 +0800 Subject: [PATCH] :art: docker --- .github/workflows/ci.yml | 10 +- README.md | 47 +-- ...17\345\222\214\344\273\223\345\272\223.md" | 80 +++- .../10.docker/14.Docker - DockerFile.md" | 373 +++++++++++++++++- ...345\205\263\344\272\216 - \346\210\221.md" | 20 +- ...53\351\200\237\344\270\212\346\211\213.md" | 20 +- ...346\241\243 - \351\203\250\347\275\262.md" | 69 +++- 7 files changed, 556 insertions(+), 63 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e2ab0275..f2ff0ee2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,18 +26,18 @@ jobs: # 工作流 with: node-version: ${{ matrix.node-version }} # 版本 #------------------------------------------------------------------- - - name: Configure Private Key #★★★★★★步骤3:设置ssh + - name: Configure Private Key #★★★★★★ 步骤3:设置ssh ★★★★★★ env: - SSH_PRIVATE_KEY: ${{ secrets.GITEE_RSA_PRIVATE_KEY }} + SSH_PRIVATE_KEY: ${{ secrets.GITEE_RSA_PRIVATE_KEY }} # gitee的ssh run: | mkdir -p ~/.ssh echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa chmod 600 ~/.ssh/id_rsa echo "StrictHostKeyChecking no" >> ~/.ssh/config - - name: Push Gitee Mirror #★★★★★★步骤4:推送到gitee + - name: Push Gitee Mirror #★★★★★★ 步骤4:推送到gitee★★★★★★ env: - SOURCE_REPO: 'https://github.com/oddfar/notes.git' - DESTINATION_REPO: 'git@gitee.com:oddfar/notes.git' + SOURCE_REPO: 'https://github.com/oddfar/notes.git' #github 仓库地址 + DESTINATION_REPO: 'git@gitee.com:oddfar/notes.git' #gitee 仓库地址 run: | git clone --mirror "$SOURCE_REPO" && cd `basename "$SOURCE_REPO"` git remote set-url --push origin "$DESTINATION_REPO" diff --git a/README.md b/README.md index 9b3a9729..20060b0d 100644 --- a/README.md +++ b/README.md @@ -5,15 +5,13 @@ - [准备](#%E5%87%86%E5%A4%87) - [写作](#%E5%86%99%E4%BD%9C) - [部署](#%E9%83%A8%E7%BD%B2) - - [手动部署到github](#%E6%89%8B%E5%8A%A8%E9%83%A8%E7%BD%B2%E5%88%B0github) - - [自动部署到github](#%E8%87%AA%E5%8A%A8%E9%83%A8%E7%BD%B2%E5%88%B0github) + - [手动部署到 GitHub](#%E6%89%8B%E5%8A%A8%E9%83%A8%E7%BD%B2%E5%88%B0-github) + - [自动部署到 GitHub](#%E8%87%AA%E5%8A%A8%E9%83%A8%E7%BD%B2%E5%88%B0-github) - [部署到自己服务器](#%E9%83%A8%E7%BD%B2%E5%88%B0%E8%87%AA%E5%B7%B1%E6%9C%8D%E5%8A%A1%E5%99%A8) -使用[vuepress](https://vuepress.vuejs.org/zh)搭建,自动部署在[GitHub Pages](https://pages.github.com/) - -使用[vdoing](https://github.com/xugaoyi/vuepress-theme-vdoing)主题 +使用 [vuepress](https://vuepress.vuejs.org/zh) 搭建,自动部署在[GitHub Pages](https://pages.github.com/) ## 准备 @@ -22,7 +20,7 @@ VuePress 需要 [Node.js ](https://nodejs.org/en/)>= 8.6 1. 克隆到本地并进入目录 ```sh - git clone https://github.com/oddfar/docs.git && cd docs + git clone https://github.com/oddfar/notes.git && cd notes ``` 2. 安装本地依赖 @@ -37,13 +35,13 @@ VuePress 需要 [Node.js ](https://nodejs.org/en/)>= 8.6 npm run dev ``` - 默认访问链接:http://localhost:8080/doc + 默认访问链接:http://localhost:8080/ ## 写作 -使用`markdown`语法编写`md`文件,所有笔记`md`文件放在`docs/docs`目录下 +使用 `markdown` 语法编写`md`文件,所有笔记 `md` 文件放在 `docs/` 目录下 -例如添加`test`类,并编写`hello.md`文件 +例如添加 `test` 类,并编写 `hello.md` 文件 1. 创建目录 @@ -69,7 +67,7 @@ VuePress 需要 [Node.js ](https://nodejs.org/en/)>= 8.6 hello world ``` - tittle:标题,不填写则默认文件名中的标题,即`hello` + tittle:标题,不填写则默认文件名中的标题,即 `hello` permalink:访问链接,不填写则自动生成 @@ -83,35 +81,40 @@ VuePress 需要 [Node.js ](https://nodejs.org/en/)>= 8.6 npm run dev ``` -详情请看[vdoing主题介绍文档](https://doc.xugaoyi.com/) +文件及写作规范详情请看 + +- [vdoing主题介绍文档](https://doc.xugaoyi.com/) +- [文档 - md文件写作](https://oddfar.github.io/notes/about/blog/3/) ## 部署 -### 手动部署到github +### 手动部署到 GitHub 创建分支:`gh-pages` 更改文件`deploy.sh`内容 -```sh -githubUrl=git@github.com:oddfar/docs.git -``` +仓库地址替换成自己的: +- githubUrl=git@github.com:oddfar/notes.git + +- githubUrl=https://oddfar:${GITHUB_TOKEN}@github.com/oddfar/notes.git + +- initDist "module.exports = '/notes/'" -```sh -githubUrl=https://oddfar:${GITHUB_TOKEN}@github.com/oddfar/docs.git -``` -双击运行`deploy.sh` +修好完后,双击运行`deploy.sh` 之后配置 [GitHub Pages](https://pages.github.com/) ![image-20210517151354287](https://cdn.jsdelivr.net/gh/oddfar/static/img/20210517151356.png) -### 自动部署到github +### 自动部署到 GitHub + + -详情查看:[点击此处](https://github.com/oddfar/notes/blob/master/docs/10.%E5%85%B3%E4%BA%8E/02.%E5%85%B3%E4%BA%8E%20-%20%E6%9C%AC%E7%AB%99/05.%E6%96%87%E6%A1%A3%E7%9A%84%E9%83%A8%E7%BD%B2.md) +详情查看:[点击此处](https://oddfar.github.io/notes/about/blog/5/) ### 部署到自己服务器 @@ -121,7 +124,7 @@ githubUrl=https://oddfar:${GITHUB_TOKEN}@github.com/oddfar/docs.git npm run build ``` -生成文件在`docs\.vuepress\dist\`目录下 +生成文件在 `docs\.vuepress\dist\` 目录下 打包到服务器即可 diff --git "a/docs/05.\345\267\245\345\205\267\351\203\250\347\275\262/10.docker/10.Docker - \351\225\234\345\203\217\345\222\214\344\273\223\345\272\223.md" "b/docs/05.\345\267\245\345\205\267\351\203\250\347\275\262/10.docker/10.Docker - \351\225\234\345\203\217\345\222\214\344\273\223\345\272\223.md" index d5c58f6c..02f60317 100644 --- "a/docs/05.\345\267\245\345\205\267\351\203\250\347\275\262/10.docker/10.Docker - \351\225\234\345\203\217\345\222\214\344\273\223\345\272\223.md" +++ "b/docs/05.\345\267\245\345\205\267\351\203\250\347\275\262/10.docker/10.Docker - \351\225\234\345\203\217\345\222\214\344\273\223\345\272\223.md" @@ -15,6 +15,8 @@ date: 2021-06-04 16:45:01 - [分层理解](#%E5%88%86%E5%B1%82%E7%90%86%E8%A7%A3) - [提交镜像](#%E6%8F%90%E4%BA%A4%E9%95%9C%E5%83%8F) - [Docker 仓库](#docker-%E4%BB%93%E5%BA%93) + - [DockerHub](#dockerhub) + - [阿里云镜像服务](#%E9%98%BF%E9%87%8C%E4%BA%91%E9%95%9C%E5%83%8F%E6%9C%8D%E5%8A%A1) @@ -160,7 +162,9 @@ ROOT docs examples host-manager manager 此时再次访问,则不是404 -3、提交我们修改后的镜像为 tomcat02 ,下次则可以直接启动这个 +**3、提交修改后的镜像为 tomcat02 ** + +下次则可以直接启动这个 注意:commit的时候,容器的名字不能有大写,否则报错:`invalid reference format` @@ -192,4 +196,76 @@ a8b6aff64fa3 ## Docker 仓库 -待补充 \ No newline at end of file +### DockerHub + +注册dockerhub https://hub.docker.com/signup + +1、登录 + +```sh +docker login -u oddfar +``` + +2、将镜像发布出去 + +```sh +[root@VM-0-6-centos logs]# docker push hello-world +Using default tag: latest +The push refers to repository [docker.io/library/hello-world] +f22b99068db9: Layer already exists +errors: +denied: requested access to the resource is denied +unauthorized: authentication required +``` + +错误:请求的资源访问被拒绝 + +问题:本地镜像名无帐号信息,解决加 tag 即可 + +```sh +[root@VM-0-6-centos logs]# docker images +REPOSITORY TAG IMAGE ID CREATED SIZE +hello-world latest d1165f221234 3 months ago 13.3kB +[root@VM-0-6-centos logs]# docker tag d1165f221234 oddfar/hello-world:1.0 +``` + +oddfar 是我的用户名 + +3、再次push + +```sh +[root@VM-0-6-centos logs]# docker push oddfar/hello-world:1.0 +``` + +访问:https://hub.docker.com/ 可看到提交的镜像 + +![image-20210606181526206](https://cdn.jsdelivr.net/gh/oddfar/static/img/Docker.assets/10.Docker-镜像和仓库.assets/image-20210606181526206.png) + + + +### 阿里云镜像服务 + +登录阿里云 -> 找到容器镜像服务 -> 创建命名空间 -> 创建镜像仓库 + +点击进入这个镜像仓库,可以看到所有的信息 + +![image-20210606192542790](https://cdn.jsdelivr.net/gh/oddfar/static/img/Docker.assets/10.Docker-镜像和仓库.assets/image-20210606192542790.png) + +指令: + +![image-20210606204609437](https://cdn.jsdelivr.net/gh/oddfar/static/img/Docker.assets/10.Docker-镜像和仓库.assets/image-20210606204609437.png) + +测试:推送 hello-world + +```sh +[root@VM-0-6-centos ~]# docker login --username=a_zhiyuan registry.cn-hangzhou.aliyuncs.com +[root@VM-0-6-centos ~]# docker tag d1165f221234 registry.cn-hangzhou.aliyuncs.com/zhiyuan/study:1.0 +[root@VM-0-6-centos ~]# docker push registry.cn-hangzhou.aliyuncs.com/zhiyuan/study:1.0 +``` + + + +提交成功 + +![image-20210606204641884](https://cdn.jsdelivr.net/gh/oddfar/static/img/Docker.assets/10.Docker-镜像和仓库.assets/image-20210606204641884.png) + diff --git "a/docs/05.\345\267\245\345\205\267\351\203\250\347\275\262/10.docker/14.Docker - DockerFile.md" "b/docs/05.\345\267\245\345\205\267\351\203\250\347\275\262/10.docker/14.Docker - DockerFile.md" index ae8aa3fc..938999be 100644 --- "a/docs/05.\345\267\245\345\205\267\351\203\250\347\275\262/10.docker/14.Docker - DockerFile.md" +++ "b/docs/05.\345\267\245\345\205\267\351\203\250\347\275\262/10.docker/14.Docker - DockerFile.md" @@ -12,7 +12,13 @@ date: 2021-06-05 17:05:29 -- [什么是DockerFile](#%E4%BB%80%E4%B9%88%E6%98%AFdockerfile) +- [什么是 DockerFile](#%E4%BB%80%E4%B9%88%E6%98%AF-dockerfile) +- [DockerFile 构建过程](#dockerfile-%E6%9E%84%E5%BB%BA%E8%BF%87%E7%A8%8B) +- [DockerFile 指令](#dockerfile-%E6%8C%87%E4%BB%A4) +- [CMD 和 ENTRYPOINT 的区别](#cmd-%E5%92%8C-entrypoint-%E7%9A%84%E5%8C%BA%E5%88%AB) +- [实战测试](#%E5%AE%9E%E6%88%98%E6%B5%8B%E8%AF%95) + - [CentOS](#centos) + - [Tomcat](#tomcat) @@ -28,7 +34,370 @@ date: 2021-06-05 17:05:29 还可以方便移植! -## 什么是DockerFile +## 什么是 DockerFile dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本 +构建步骤: + +1、编写DockerFile文件 + +2、docker build 构建镜像 + +3、docker run + +查看之前拉取的 centos :https://hub.docker.com/_/centos + +![image-20210606163702268](https://cdn.jsdelivr.net/gh/oddfar/static/img/Docker.assets/14.Docker-DockerFile.assets/image-20210606163702268.png) + +查看`Dockerfile` 文件 + +![image-20210606163720066](https://cdn.jsdelivr.net/gh/oddfar/static/img/Docker.assets/14.Docker-DockerFile.assets/image-20210606163720066.png) + +## DockerFile 构建过程 + +**基础知识:** + +1、每条保留字指令都必须为大写字母且后面要跟随至少一个参数 + +2、指令按照从上到下,顺序执行 + +3、# 表示注释 + +4、每条指令都会创建一个新的镜像层,并对镜像进行提交 + +**流程:** + +1、docker从基础镜像运行一个容器 + +2、执行一条指令并对容器做出修改 + +3、执行类似 docker commit 的操作提交一个新的镜像层 + +4、Docker再基于刚提交的镜像运行一个新容器 + +5、执行dockerfile中的下一条指令直到所有指令都执行完成! + +**说明:** + +从应用软件的角度来看,DockerFile,docker镜像 与 docker容器 分别代表软件的三个不同阶段。 + +- DockerFile 是软件的原材料 (代码) +- Docker 镜像则是软件的交付品 (.apk) +- Docker 容器则是软件的运行状态 (客户下载安装执行) + +DockerFile 面向开发,Docker镜像成为交付标准,Docker容器则涉及部署与运维,三者缺一不可! + +![img_72](https://cdn.jsdelivr.net/gh/oddfar/static/img/Docker.assets/14.Docker-DockerFile.assets/img_72.png) + +DockerFile:需要定义一个DockerFile,DockerFile定义了进程需要的一切东西。DockerFile涉及的内容 包括执行代码或者是文件、环境变量、依赖包、运行时环境、动态链接库、操作系统的发行版、服务进 程和内核进程(当引用进行需要和系统服务和内核进程打交道,这时需要考虑如何设计 namespace的权 限控制)等等。 + +Docker镜像:在DockerFile 定义了一个文件之后,Docker build 时会产生一个Docker镜像,当运行 Docker 镜像时,会真正开始提供服务; + +Docker容器:容器是直接提供服务的。 + +## DockerFile 指令 + + + +| 关键字 | 说明 | +| ---------- | ------------------------------------------------------------ | +| FROM | 基础镜像,当前新镜像是基于哪个镜像的 | +| MAINTAINER | 镜像维护者的姓名混合邮箱地址 | +| RUN | 容器构建时需要运行的命令 | +| EXPOSE | 当前容器对外保留出的端口 | +| WORKDIR | 指定在创建容器后,终端默认登录的进来工作目录,一个落脚点 | +| ENV | 用来在构建镜像过程中设置环境变量 | +| ADD | 将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包 | +| COPY | 类似ADD,拷贝文件和目录到镜像中! | +| VOLUME | 容器数据卷,用于数据保存和持久化工作 | +| CMD | 指定一个容器启动时要运行的命令,dockerFile中可以有多个CMD指令,但只有最后一个生效! | +| ENTRYPOINT | 指定一个容器启动时要运行的命令!和CMD一样 | +| ONBUILD | 当构建一个被继承的DockerFile时运行命令,父镜像在被子镜像继承后,父镜像的 ONBUILD被触发 | + +![img_74](https://cdn.jsdelivr.net/gh/oddfar/static/img/Docker.assets/14.Docker-DockerFile.assets/img_74.png) + +![img_75](https://cdn.jsdelivr.net/gh/oddfar/static/img/Docker.assets/14.Docker-DockerFile.assets/img_75.png) + + + + + + + +## CMD 和 ENTRYPOINT 的区别 + +我们之前说过,两个命令都是指定一个容器启动时要运行的命令 + +- CMD + + Dockerfile 中可以有多个CMD 指令,但只有最后一个生效,CMD 会被 docker run 之后的参数替换! + +- ENTRYPOINT + + docker run 之后的参数会被当做参数传递给 ENTRYPOINT,之后形成新的命令组合! + + + +::: tip 测试 CMD 命令 + +::: + +1、编写文件 + +```sh +[root@VM-0-6-centos dockerfile-test]# vim dockerfile-cmd-test +[root@VM-0-6-centos dockerfile-test]# cat dockerfile-cmd-test +FROM centos +CMD [ "ls", "-a" ] +``` + + + +2、构建并运行 + +```sh +docker build -f dockerfile-cmd-test -t cmdtest . + +docker run cmdtest +``` + +![image-20210606171411821](https://cdn.jsdelivr.net/gh/oddfar/static/img/Docker.assets/14.Docker-DockerFile.assets/image-20210606171411821.png) + +3、如果我们希望用 -l 列表展示信息,我们就需要加上 -l参数 + +```sh +[root@VM-0-6-centos dockerfile-test]# docker run cmdtest -l +docker: Error response from daemon: OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "-l": executable file not found in $PATH: unknown. +``` + +问题:我们可以看到可执行文件找不到的报错,executable file not found。 + +之前我们说过,跟在镜像名后面的是 command,运行时会替换 CMD 的默认值。 + +因此这里的 `-l` 替换了原来的 CMD,而不是添加在原来的 `ls -a` 后面。 + +而 -l 根本不是命令,所以自然找不到。 + +那么如果我们希望加入 `-l `这参数,我们就必须重新完整的输入这个命令: + +```sh +docker run cmdtest ls -al +``` + + + +::: tip 测试 ENTRYPOINT 命令 + +::: + +1、编写文件 + +```sh +[root@VM-0-6-centos dockerfile-test]# vim dockerfile-entrypoint-test +[root@VM-0-6-centos dockerfile-test]# cat dockerfile-entrypoint-test +FROM centos +ENTRYPOINT [ "ls", "-a" ] +``` + +2、构建并运行 + +```sh +docker build -f dockerfile-entrypoint-test -t entrypointtest . + +docker run entrypointtest +``` + +3、测试 -l 参数,发现可以直接使用,这里就是一种追加 + +我们可以明显的知道 CMD 和 ENTRYPOINT 的区别了 + +```sh +docker run entrypointtest -l +``` + +![image-20210606171953764](https://cdn.jsdelivr.net/gh/oddfar/static/img/Docker.assets/14.Docker-DockerFile.assets/image-20210606171953764.png) + + + + + +## 实战测试 + +### CentOS + +官方默认的 CentOS 的情况不支持 `vim` 和 `ifconfig` 指令 + +我们自己构建一个支持这些指令的镜像 + +**1、编写文件** + +```sh +[root@VM-0-6-centos home]# cd dockerfile-test +[root@VM-0-6-centos dockerfile-test]# ls +my-centos +[root@VM-0-6-centos dockerfile-test]# cat my-centos +FROM centos +MAINTAINER zhiyuan + +ENV MYPATH /usr/local +WORKDIR $MYPATH + +RUN yum -y install vim +RUN yum -y install net-tools + + +EXPOSE 80 + +CMD echo $MYPATH +CMD echo "----end-----" +CMD /bin/bash +``` + +**2、构建** + +命令最后有一个 `.` 表示当前目录 + +```sh +docker build -f my-centos -t mycentos:1.1 . +``` + +成功后: + +![image-20210606165936963](https://cdn.jsdelivr.net/gh/oddfar/static/img/Docker.assets/14.Docker-DockerFile.assets/image-20210606165936963.png) + +**3、运行** + +```sh +docker run -it mycentos:1.1 +``` + +测试后,可以看到,我们自己的新镜像已经支持 vim 和 ifconfig的命令了 + + + +- 列出镜像的变更历史: + + `docker history 镜像名\镜像id` + + + +### Tomcat + +步骤: + +- 将 JDK 和 tomcat 安装的压缩包拷贝`/home/build` 目录下 + + 下载地址: + + 链接:https://pan.baidu.com/s/1QZEmvAgyh4-8DbebVz7koQ + + 提取码:spfo + +- 新建一个 read.txt 文件 + +- 新建一个 Dockerfile 文件 + +```sh +[root@VM-0-6-centos home]# cd build +[root@VM-0-6-centos build]# ls +apache-tomcat-9.0.46.tar.gz Dockerfile jdk-8u11-linux-x64.tar.gz read.txt tomcat +``` + +Dockerfile 内容 + +```sh +FROM centos + +MAINTAINER zhiyuan +#把宿主机当前上下文的read.txt拷贝到容器/usr/local/路径下 +COPY read.txt /usr/local/cincontainer.txt +#把java与tomcat添加到容器中 +ADD jdk-8u11-linux-x64.tar.gz /usr/local/ +ADD apache-tomcat-9.0.46.tar.gz /usr/local/ +#安装vim编辑器 +RUN yum -y install vim +#变量 +ENV MYPATH /usr/local +#设置工作访问时候的WORKDIR路径,登录落脚点 +WORKDIR $MYPATH +#配置java与tomcat环境变量 +ENV JAVA_HOME /usr/local/jdk1.8.0_11 +ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar +ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.46 +ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.46 +ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin +#容器运行时监听的端口 +EXPOSE 8080 +#启动时运行tomcat +# ENTRYPOINT ["/usr/local/apache-tomcat-9.0.46/bin/startup.sh" ] +# CMD ["/usr/local/apache-tomcat-9.0.46/bin/catalina.sh","run"] +CMD /usr/local/apache-tomcat-9.0.46/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.46/bin/logs/catalina.out +``` + +**构建镜像:** + +```sh +docker build -t diytomcat . +``` + +在此目录下默认构建 `Dockerfile` 文件,所以不需要带上文件名 + +**启动:** + +```sh +docker run -d -p 9090:8080 --name mydiytomcat -v /home/build/tomcat/test:/usr/local/apache-tomcat-9.0.46/webapps/test -v /home/build/tomcat/logs/:/usr/local/apache-tomcat-9.0.46/logs --privileged=true diytomcat +``` + +备注:Docker挂载主机目录Docker访问出现cannot open directory Permission denied + +解决办法:在挂载目录后多加一个--privileged=true参数即可 + +**写个测试网站扔到test目录:** + +web.xml + +```xml + + + Test + + +``` + + + +a.jsp + +```jsp +<%@ page language="java" contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8"%> + + + + +测试 + + + Hello World!
+ <% System.out.println("-------my docker tomcat-------");%> + + +``` + +**查看日志:** + +```sh +[root@VM-0-6-centos tomcat]# cd logs +[root@VM-0-6-centos logs]# cat catalina.out +``` + +![image-20210606174533465](https://cdn.jsdelivr.net/gh/oddfar/static/img/Docker.assets/14.Docker-DockerFile.assets/image-20210606174533465.png) + + + diff --git "a/docs/10.\345\205\263\344\272\216/01.\345\205\263\344\272\216 - \346\210\221/01.\345\205\263\344\272\216 - \346\210\221.md" "b/docs/10.\345\205\263\344\272\216/01.\345\205\263\344\272\216 - \346\210\221/01.\345\205\263\344\272\216 - \346\210\221.md" index 504b2ce2..5ed8ad38 100644 --- "a/docs/10.\345\205\263\344\272\216/01.\345\205\263\344\272\216 - \346\210\221/01.\345\205\263\344\272\216 - \346\210\221.md" +++ "b/docs/10.\345\205\263\344\272\216/01.\345\205\263\344\272\216 - \346\210\221/01.\345\205\263\344\272\216 - \346\210\221.md" @@ -28,29 +28,31 @@ permalink: /about/me/ -- 好记性不如烂笔头 - - 学的再快再多,不如学好学精 +- 构建自己的知识体系 - 监督自己的学习 - 本人学习很不爱记笔记,学过之后,很多知识忘了。以此网站监督自己学习! - - 帮助其他初学者 - 笔记内容不深,适合初学者阅读 + 笔记内容不深,希望能帮到一些初学者 + +推荐阅读:[如何构建自己的笔记系统?](https://www.zhihu.com/question/23427617/answer/1445129874) ## 学习资料 -本人学习java主要来源于尚硅谷、狂神、黑马程序员的教程 -视频可在bilibili上搜 -本人处于学习阶段,学习java也没多长时间,没硬实力写出完好的自己的知识体系 +本人学习 java 也没多长时间,相对于写笔记,更喜欢在别人笔记的基础上作修改, + +还没硬实力写出完好的自己的知识体系 大部分java笔记借助于狂神和尚硅谷课堂笔记,在文章结尾或开头有视频教程链接地址传送 笔记加了点自己的理解,和其他站点的讲解。 +内容难免会有问题,如有任何问题,请各位大佬斧正! + +在[本项目地址](https://github.com/oddfar/notes)创建 “issues” + diff --git "a/docs/10.\345\205\263\344\272\216/02.\345\205\263\344\272\216 - \346\234\254\347\253\231/02.\346\226\207\346\241\243 - \345\277\253\351\200\237\344\270\212\346\211\213.md" "b/docs/10.\345\205\263\344\272\216/02.\345\205\263\344\272\216 - \346\234\254\347\253\231/02.\346\226\207\346\241\243 - \345\277\253\351\200\237\344\270\212\346\211\213.md" index e6080373..4e470cd7 100644 --- "a/docs/10.\345\205\263\344\272\216/02.\345\205\263\344\272\216 - \346\234\254\347\253\231/02.\346\226\207\346\241\243 - \345\277\253\351\200\237\344\270\212\346\211\213.md" +++ "b/docs/10.\345\205\263\344\272\216/02.\345\205\263\344\272\216 - \346\234\254\347\253\231/02.\346\226\207\346\241\243 - \345\277\253\351\200\237\344\270\212\346\211\213.md" @@ -31,27 +31,27 @@ VuePress 需要 [Node.js ](https://nodejs.org/en/)>= 8.6 1. 克隆到本地并进入目录 - ``` - git clone https://github.com/oddfar/docs.git && cd docs + ```sh + git clone https://github.com/oddfar/notes.git && cd notes ``` 或 gitee 地址: ```sh - git clone https://gitee.com/oddfar/docs.git && cd docs + git clone https://gitee.com/oddfar/notes.git && cd notes ``` 2. 安装本地依赖 - ``` + ```sh npm install ``` 3. 本地测试 - ``` + ```sh npm run dev ``` @@ -59,9 +59,9 @@ VuePress 需要 [Node.js ](https://nodejs.org/en/)>= 8.6 ## 快速开始 -使用`markdown`语法编写`md`文件,所有笔记`md`文件放在`docs/docs`目录下 +使用 `markdown` 语法编写 `md` 文件,所有笔记 `md` 文件放在 `docs/` 目录下 -例如添加`test`类,并编写`hello.md`文件 +例如添加 `test` 类,并编写 `hello.md` 文件 1. 创建目录 @@ -75,7 +75,7 @@ VuePress 需要 [Node.js ](https://nodejs.org/en/)>= 8.6 3. 编写内容 - ``` + ```markdown --- title: 笔记标题 permalink: /test/hello/ @@ -87,7 +87,7 @@ VuePress 需要 [Node.js ](https://nodejs.org/en/)>= 8.6 hello world ``` - tittle:标题,不填写则默认文件名中的标题,即`hello` + tittle:标题,不填写则默认文件名中的标题,即 `hello` permalink:访问链接,不填写则自动生成 @@ -97,7 +97,7 @@ VuePress 需要 [Node.js ](https://nodejs.org/en/)>= 8.6 在项目根目录下 - ``` + ```sh npm run dev ``` diff --git "a/docs/10.\345\205\263\344\272\216/02.\345\205\263\344\272\216 - \346\234\254\347\253\231/05.\346\226\207\346\241\243 - \351\203\250\347\275\262.md" "b/docs/10.\345\205\263\344\272\216/02.\345\205\263\344\272\216 - \346\234\254\347\253\231/05.\346\226\207\346\241\243 - \351\203\250\347\275\262.md" index 961d0ad7..c78f8b3e 100644 --- "a/docs/10.\345\205\263\344\272\216/02.\345\205\263\344\272\216 - \346\234\254\347\253\231/05.\346\226\207\346\241\243 - \351\203\250\347\275\262.md" +++ "b/docs/10.\345\205\263\344\272\216/02.\345\205\263\344\272\216 - \346\234\254\347\253\231/05.\346\226\207\346\241\243 - \351\203\250\347\275\262.md" @@ -9,10 +9,10 @@ permalink: /about/blog/5 - [手动部署](#%E6%89%8B%E5%8A%A8%E9%83%A8%E7%BD%B2) - - [github](#github) + - [GitHub](#github) - [自己服务器](#%E8%87%AA%E5%B7%B1%E6%9C%8D%E5%8A%A1%E5%99%A8) -- [github自动部署](#github%E8%87%AA%E5%8A%A8%E9%83%A8%E7%BD%B2) - - [生成Token](#%E7%94%9F%E6%88%90token) +- [GitHub 自动部署](#github-%E8%87%AA%E5%8A%A8%E9%83%A8%E7%BD%B2) + - [生成 Token](#%E7%94%9F%E6%88%90-token) - [配置秘钥](#%E9%85%8D%E7%BD%AE%E7%A7%98%E9%92%A5) - [自动部署自己服务器](#%E8%87%AA%E5%8A%A8%E9%83%A8%E7%BD%B2%E8%87%AA%E5%B7%B1%E6%9C%8D%E5%8A%A1%E5%99%A8) @@ -22,21 +22,25 @@ permalink: /about/blog/5 ## 手动部署 -### github +### GitHub 创建分支:`gh-pages` 更改文件`deploy.sh`内容 -``` -githubUrl=git@github.com:oddfar/docs.git -``` +仓库地址替换成自己的: + +- githubUrl=git@github.com:oddfar/notes.git + +- githubUrl=https://oddfar:${GITHUB_TOKEN}@github.com/oddfar/notes.git + +- initDist "module.exports = '/notes/'" + + + +修好完后,双击运行`deploy.sh` -``` -githubUrl=https://oddfar:${GITHUB_TOKEN}@github.com/oddfar/docs.git -``` -双击运行`deploy.sh` 之后配置 [GitHub Pages](https://pages.github.com/) @@ -58,15 +62,17 @@ npm run build 注:本地不可直接访问,需要配合插件,详情看官方文档 -## github自动部署 +## GitHub 自动部署 目录 ` .github\workflows\` 下的 `ci.yml` 文件为配置文件 +若不需要同步到 Gitee 镜像,把文件里面的 步骤三和步骤四 删掉 + 配置文件已经写好了,我们只需要在 github 上配置下秘钥(secrets) 前提已经配置了 [GitHub Pages](https://pages.github.com/) 服务并能正常访问 -### 生成Token +### 生成 Token **Settings -> Developer settings->Personal access tokens** @@ -112,3 +118,40 @@ Value填写上一步生成的Token ## 自动部署自己服务器 +简单的说下步骤: + +![image-20210606155256478](https://cdn.jsdelivr.net/gh/oddfar/static/img/20210606160230.png) + +目录 ` .github\workflows\` 下的 `ci.yml` 文件为配置文件 + +需要把项目地址修改成自己的,并在 Secret 中添加Token: `GITEE_RSA_PRIVATE_KEY` 内容为 SSH 私钥 + + + +脚本文件: + +```sh +cd /www/wwwroot/note.oddfar.com/ +rm -rf notes +git clone -b gh-pages https://gitee.com/oddfar/notes.git +cp -rf notes/* run/ +``` + + + +定时任务: + +image-20210606155549234 + + + +宝塔 设置运行目录: + +image-20210606155341832 + +最后访问地址: + +- [https://note.oddfar.com](https://note.oddfar.com) + +- [https://oddfar.github.io/notes](https://oddfar.github.io/notes/) +