Dockerfile 分段式构建

介绍 在Docker Engine 17.05 中引入了多阶段构建 在一个Dockerfile中使用多个FROM指令,每个FROM都可以使用不同的基镜像,并且每条指令都将开始新阶段构建。在多阶段构建中,我们可以将资源从一个阶段复制到另一个阶段,在最终镜像中只保留我们所需要的内容。 Dockerfile 示例 # build ui FROM node:16 AS ui COPY ui /src RUN cd /src \ && npm config set registry http://mirrors.cloud.tencent.com/npm/ \ && npm install \ && npm run build # build server FROM maven:3.6-jdk-8 AS server COPY server /src COPY --from=ui /src/dist /src/admin/src/main/resources/public RUN cd /src && mvn clean install # build image FROM openjdk:8-jre-alpine3.9 LABEL author=Eric COPY --from=server /src/admin/target/admin.jar /opt/app.jar COPY application.yml /opt/config/application.yml WORKDIR /opt EXPOSE 8080 ENTRYPOINT ["java","-jar","app.jar", "--spring.config.location=optional:config/application.yml"] dockerfile中 FROM 指令后添加 AS <NAME>来命名构建阶段,以后的阶段中使用COPY --from=<NAME> /src/admin/target/admin.jar /opt/app.jar 从指定的阶段中复制文件; ...

2023年7月9日 · 1 分钟 · Eric

小米路由器Pro SSH登录

测试型号为 小米路由器Pro R3P 更新固件为开发者版本 Rom下载地址:http://www1.miwifi.com/miwifi_download.html 后台手动升级 安装ssh工具包 ssh工具包下载地址:https://d.miwifi.com/rom/ssh 需要登录小米帐号,会有root密码,页面有安装步骤 问题1 Unable to negotiate with 10.11.1.8 port 22: no matching key exchange method found. Their offer: diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1 解决 ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 root@192.168.31.1 问题2 Unable to negotiate with 192.168.31.1 port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss 解决 指定算法 ssh -o HostKeyAlgorithms=+ssh-rsa -oKexAlgorithms=+diffie-hellman-group1-sha1 root@192.168.31.1

2023年1月26日 · 1 分钟 · Eric

Docker OpenOffice excel 转 pdf

Docker 安装 OpenOffice OpenOffice 下载地址:https://www.openoffice.org/download/index.html 选择对应环境的安装包文件,下载 Download full installation Dockerfile 如下: FROM centos:7 MAINTAINER Eric # 添加 openoffice 安装包 ADD Apache_OpenOffice_4.1.13_Linux_x86-64_install-rpm_zh-CN.tar.gz /opt/ # 添加字体,拷贝自 windows 环境下 C:/Windows/Fonts 目录文件 COPY ./fonts /usr/share/fonts RUN cd /opt && \ yum install -y zh-CN/RPMS/*.rpm && \ yum install -y java-1.8.0-openjdk && \ yum clean all && \ chmod -R 755 /usr/share/fonts && \ yum install mkfontscale fontconfig -y && \ yum groupinstall "X Window System" -y && \ mkfontscale && \ mkfontdir && \ fc-cache -f && \ rm -rf zh-CN EXPOSE 8100 CMD /opt/openoffice4/program/soffice -headless -nofirststartwizard -accept="socket,host=0.0.0.0,port=8100;urp;" 安装完成启动容器,映射8100端口即可; ...

2022年8月7日 · 2 分钟 · Eric

Tmux 快捷键

配置 # 目录 ~/.tmux.conf # 启用鼠标控制 set -g mouse on # 256色 set -g default-terminal "tmux-256color" 快捷键 会话 session # 新建会话 $ tmux new -s <session-name> Ctrl+b d:分离当前会话。 Ctrl+b s:列出所有会话。 Ctrl+b $:重命名当前会话。 # 删除会话 Ctrl+b 输入 :kill-session 删除当前会话 (assuming here that you're on keepMe session) $ tmux kill-session -t otherSession -or- $ tmux kill-session -t 3 窗格 pane Ctrl+b %:划分左右两个窗格。 Ctrl+b ":划分上下两个窗格。 Ctrl+b <arrow key>:光标切换到其他窗格。<arrow key>是指向要切换到的窗格的方向键。 Ctrl+b ;:光标切换到上一个窗格。 Ctrl+b o:光标切换到下一个窗格。 Ctrl+b {:当前窗格与上一个窗格交换位置。 Ctrl+b }:当前窗格与下一个窗格交换位置。 Ctrl+b Ctrl+o:所有窗格向前移动一个位置,第一个窗格变成最后一个窗格。 Ctrl+b Alt+o:所有窗格向后移动一个位置,最后一个窗格变成第一个窗格。 Ctrl+b x:关闭当前窗格。 Ctrl+b !:将当前窗格拆分为一个独立窗口。 Ctrl+b z:当前窗格全屏显示,再使用一次会变回原来大小。 Ctrl+b Ctrl+<arrow key>:按箭头方向调整窗格大小。 Ctrl+b q:显示窗格编号。 窗口 window Ctrl+b c:创建一个新窗口,状态栏会显示多个窗口的信息。 Ctrl+b p:切换到上一个窗口(按照状态栏上的顺序)。 Ctrl+b n:切换到下一个窗口。 Ctrl+b <number>:切换到指定编号的窗口,其中的<number>是状态栏上的窗口编号。 Ctrl+b w:从列表中选择窗口。 Ctrl+b ,:窗口重命名。 其他 # 列出所有快捷键,及其对应的 Tmux 命令 $ tmux list-keys # 列出所有 Tmux 命令及其参数 $ tmux list-commands # 列出当前所有 Tmux 会话的信息 $ tmux info # 重新加载当前的 Tmux 配置 $ tmux source-file ~/.tmux.conf

2022年3月29日 · 1 分钟 · Eric

Mysql 常用命令

创建用户并授权 CREATE USER 'halo'@'%' IDENTIFIED BY 'root@123456'; GRANT ALL PRIVILEGES ON halo.* TO 'halo'@'%'; 授权 grant all privileges on zhangsanDb.* to zhangsan@'%' identified by 'zhangsan'; flush privileges; privilegesCode 表示授予的权限类型,常用的有以下几种类型[1]: all privileges:所有权限。 select:读取权限。 delete:删除权限。 update:更新权限。 create:创建权限。 drop:删除数据库、数据表权限。 dbName.tableName 表示授予权限的具体库或表,常用的有以下几种选项: .:授予该数据库服务器所有数据库的权限。 dbName.*:授予dbName数据库所有表的权限。 dbName.dbTable:授予数据库dbName中dbTable表的权限。 username@host 表示授予的用户以及允许该用户登录的IP地址。其中Host有以下几种类型: localhost:只允许该用户在本地登录,不能远程登录。 %:允许在除本机之外的任何一台机器远程登录。 192.168.52.32:具体的IP表示只允许该用户从特定IP登录。 password 指定该用户登录时的面。 flush privileges 表示刷新权限变更。 查询授权 show grants for 'zhangsan'; 修改密码 update mysql.user set password = password('password1') where user = 'zhangsan' and host = '%'; flush privileges; 删除用户 drop user zhangsan@'%'; 查看修改时区 -- 查看时区 show variables like '%time_zone%'; -- 时区设置为 +8 SET time_zone='+8:00' 修改 my.cnf 文件 ...

2021年8月8日 · 1 分钟 · Eric