Skip to main content

· 3 min read
Alan

原文

版权声明:本文为CSDN博主「冷雨幽梦」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/CurtainWei/article/details/115416423

问题描述

在Vmware Workstation 16 Pro中简易安装Windows 7 SP1后,无法安装VMware Tools,提示“安装程序无法自动安装Virtual Machine Communication Interface(VMCI)驱动程序。必须手动安装此驱动程序。”

· 4 min read
Alan

常用Dockerfile文件指令介绍

ARG

Dockerfile中的ARG指令用于定义用户变量, 这些变量在用户构建镜像(docker build)的时候使用--build-arg <var_name>=<value>可以修改, 通过镜像创建容器的系统中, 是无法访问到这些变量的. 也就是说ARG定义的变量, 仅在构建阶段起作用. 如果使用docker build --build-arg 使用了在 Dockerfile中未定义的参数, 在构建的时候会输出警告.

示例

下面是一个示例, 在构建镜像的时候可以修改镜像里的用户名:

Dockerfile
FROM alanway/code-server:latest

EXPOSE 80

# 设置两个变量
ARG USER=editor
ARG USER_ID=1000

# 1. 创建用户
# 2. 创建 /app 目录
# 3. 修改 /app 目录所有者, 如果不修改, 创建的用户对 /app 目录没有读写权限
RUN useradd --create-home --uid $USER_ID --user-group --shell /bin/bash $USER \
&& mkdir /app \
&& chown $USER:$USER /app

# 设置镜像的当前用户
USER $USER

WORKDIR /app
# 拷贝文件的默认所有者为root, 加上 --chown=$USER 修改文件所有者为上面新创建的用户
COPY --chown=$USER ./src ./

开始构建

build.sh
docker build --file Dockerfile --tag blog-editor --build-arg USER=alan ./
danger

不推荐在镜像构建阶段传递安全密钥信息(比如github keys, user credentials等). 构建阶段的变量对用户是可见的, 使用docker history命令即可看到构建时的变量.

Dockerfile预置 ARG

Docker提供了一批预先定义的ARG, 无需在Dockerfile中定义即可使用:

  • HTTP_PROXY
  • http_proxy
  • HTTPS_PROXY
  • https_proxy
  • FTP_PROXY
  • ftp_proxy
  • NO_PROXY
  • no_proxy

直接使用 --build-arg 标识即可使用: docker build --build-arg HTTPS_PROXY=https://my-proxy.example.com .

默认情况下, 上面预置的指令在docker history命令中是不会输出的, 这样做是为了减少类似下面使用方式带来的安全风险:

docker build --build-arg HTTP_PROXY=http://user:pass@proxy.lon.example.com ./

上面的 HTTP_PROXY 参数值有敏感信息, 使用 docker history 是无法看到这个敏感信息的. 如果上述ARGdocker history中出现, 可以在Dockerfile中声明一次:

Dockerfile
FROM ubuntu

ARG HTTP_PROXY

ENV

ENV指令可以用来定义系统环境变量, 这些变量可以在创建容器(docker run)的时候使用-e参数修改环境变量. 这些环境变量在容器启动后仍然可以访问.

格式如下

ENV <key>=<value> ...

示例

Dockerfile
FROM ubuntu

ENV TZ=Asia/Shanghai
ENV MY_NAME="John Doe"
ENV MY_DOG=Rex\ The\ Dog
ENV MY_CAT=fluffy

可以使用 docker inspect 查看环境变量的值, 在docker run创建容器的时候使用--env 修改环境变量的值:

docker run -it --rm --env TZ=test_value -e MY_NAME="Alan Wei" ubuntu bash

· One min read
Alan

依次打开IDEA设置:

Settings > Build, Execution, Deployment > Compiler

然后在 Shared build process VM options 增加 -Djps.track.ap.dependencies=false 即可.

也可以针对项目设置. 原理就是使用增加JVM环境变量.

如果还未生效, 需要执行以下mvn clean命令清理 target

· One min read
Alan

Flutter远程无线调试 zAndroid App:

  1. 手机号电脑要在同一无线网络(SSID)
  2. 手机开启开发者模式(一般是连续点击Android版本号或者MIUI版本号),
  3. 进入开发者选项里, 开启 Wireless debugging 并进入
  4. 点击 Pair device with pairing code, 生成一个pair code, 然后电脑上执行 adb pair [host]:[port] [pair code] 连接设备.(adb命令位于 android sdk 的 platform-tools 文件夹)
  5. 继续执行 adb connect [host]:[port], 这里的hostportWireless debugging 设置里的 IP address & Port
  6. 然后执行 flutter devices 就可以看到连上 android 设备.

参考 Set Up Device for Development

· 3 min read
Alan

概述

如果安装的是最新版的 Docker, 在容器内部直接使用 host.docker.internal 即可访问主机网络, 比如在容器执行 curl http://host.docker.internal:8080 即可访问主机的8080端口. (对于Linux环境, 创建容器时需要增加--add-host=host.docker.internal:host-gateway参数)