尝试在Windows上安装docker镜像时,我发现了一些有趣的怪异.
我创建了一个.sh脚本,它执行项目文件夹的安装以运行我们的开发人员环境图像.我想要一个每个开发人员都可以运行的脚本,无论他们的机器如何.它所做的就是使用当前项目文件夹运行docker.
#!/usr/bin/env bash
docker run -it --rm -v D:\my\project\folder:/wkDir $IMAGE_TAG yarn dev
Run Code Online (Sandbox Code Playgroud)
运行没问题.现在的计划是调用这个脚本npm,所以我希望这相对于当前文件夹工作.我们来试试另一个版本.
docker run -it --rm -v $PWD:/wkDir $IMAGE_TAG yarn dev
失败:
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from
daemon: Mount denied:
The source path "D:/my/project/folder;C"
doesn't exist and is not known to Docker.
Run Code Online (Sandbox Code Playgroud)
笏.这是什么;C以及它来自哪里?
所以我这样做echo $PWD了/d/my/project/folder.
有趣的是,所以$PWD解决了linux路径格式中的正确路径,似乎docker正试图从那个转换为正确的Windows路径,除非这个;C出现在无处.而且\是/...
到底发生了什么?
我在VSCode的终端git bash和powershell中得到了相同的结果.
更新:我注意到.sh在VSCode的powershell终端中运行,打开一个单独的cmd.exe控制台窗口,似乎在git bash中运行脚本.所以这可能是一个git bash问题.
我最近了解了Task Runner Explorer,并对它的功能感到好奇.我在工作中使用TeamCity和AppVeyor,我想知道它如何与CI工具一起使用.我快速浏览了一下,看不到任何目标添加到我的项目.csproj文件中.
是否有一种快速而愉快的方式在IDE之外的构建环境中利用这些事件挂钩?
目前,Visual Studio Code 提供了有关for和class和enum(我正在使用 Typescript)等常见语言关键字的有用提示。我不需要这些词的帮助 - 它们只是噪音,阻止我看到更多相关条目。
有没有一种方法可以只禁用“语言关键字”的建议,而保留所有其他建议?
我一直在使用 Typescript 的类型映射和条件类型功能,并发现它们在为我的代码构建开发人员友好的 API 方面非常独特且具有开创性。我的印象是它们是相当独特的功能,但我想我会问是否还有其他语言具有功能等效性?还是 Typescript 是唯一的?
在 nextjs 最近的一项更新中,vscode 中的客户端 chrome 调试似乎已损坏。当我启动以下配置时,我的断点都没有被绑定:
{
"type": "chrome",
"request": "launch",
"name": "Debug Chrome on localhost",
"url": "http://localhost:3000",
"webRoot": "${workspaceFolder}/pathto/myapp"
},
Run Code Online (Sandbox Code Playgroud)
请注意,我正在使用Debugger for Chrome (v4.12.10)扩展程序,VSCode (v1.48.1)并且正在调试通过nextjs (v9.5.2)在 Chrome 中运行提供的客户端 JavaScript,而不是 nextjs 节点进程。
有谁知道发生了什么变化以及如何让调试器再次绑定断点?
google-chrome-devtools visual-studio-code next.js vscode-debugger
我想知道是否有人能够了解当我通过SSH连接到我们的源代码管理服务器时,SmartGit不表现的原因.GitBash表现很好.
背景:
我在网络上设置了一个源控制服务器,运行带有WinSSH的MSYSGit作为SSH服务器.它挂钩到AD来解析用户名等,我已经导入了所有公共RSA密钥等.一切都很好用.
对我们来说,一个曲线球是,虽然Git安装在' C:\ Program Files(x86)\ Git ',但我们的实际源代码位于' C:\ Git ',它会定期备份.
我已经配置WinSSH使所有SSH会话默认为' C:\ Git '作为他们的主文件夹,这是一种享受.当我使用Git Bash连接到服务器时,它默认为' C:\ Git '.完善.
当我使用SmartGit(使用SmartGit SSH客户端)连接到同一服务器时,使用url:
ssh://<server>/<folder>/<repo>
Run Code Online (Sandbox Code Playgroud)
我得到一个错误说道路......
C:\Program Files (x86)\Git\<folder>\<repo>
Run Code Online (Sandbox Code Playgroud)
......似乎不是一个存储库.好吧,是的......它应该在' C:\ Git '中找到它,而不是' C:\ Program Files(x86)\ Git '.
我不确定为什么SmartGit不适合这个设置,但我认为它的SSH客户端绕过了默认的WinSSH设置,因为它完全从' C:\ Program Files(x86)\ Git指定整个路径".
我的问题:
SmartGit可能从哪个想法获得' C:\ Program Files(x86)\ Git '路径?
这是我可以设置的变量吗?
更多信息(更新)
SmartGit的版本是3.0.4,但问题也出现在2.x中.
我已经附上了(我很确定)是SmartGit应用程序日志中失败的实例:
1782732(2012-05-10 12:18:56,653)[QThreadPoolThread-2(smartgit.KL)] INFO smartgit.core.executable - 执行以下命令:"C:\ Program Files\Git\bin\git.exe"ls -remote ssh://initio-dev01/INIT/INIT.Framework.git refs/heads /
1782732(2012-05-10 12:18:56,653)[QThreadPoolThread-2(smartgit.KL)] INFO smartgit.core.executable - 在目录中:null
1783049(2012-05-10 12:18:56,970)[QThreadPoolThread-8(smartgit.aqT)] INFO smartgit.server - 收到的命令:ssh
1786438(2012-05-10 12:19:00,359)[QThreadPoolThread-6(smartgit.cR)] INFO …
我刚刚开始使用Web API,并且通常喜欢它,但是发现使用'application/x-www-form-urlencoded'从POST请求中读取数据是一件痛苦的事.我想看看是否有更好的方法来做到这一点.我的应用程序(x可编辑的表单)向我的控制器发出一个简单的HTTP POST请求,其中包含3个值:pk,name,value.
请求如下:
POST http://localhost/XXXX.Website/api/Category/Set HTTP/1.1
Host: localhost
Connection: keep-alive
Content-Length: 39
Accept: */*
Origin: http://localhost
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Referer: http://localhost/XXXX.Website/
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Cookie: ...
name=myPropertyName&value=myTestValue&pk=1
Run Code Online (Sandbox Code Playgroud)
我的ApiController中的Action方法是:
public HttpResponseMessage PostSet(FormDataCollection set) {}
Run Code Online (Sandbox Code Playgroud)
我可以从FormDataCollection中读取表单值,但有人可以向我解释为什么我不能简单地写:
public HttpResponseMessage PostSet(string name, string value, id pk) {}
Run Code Online (Sandbox Code Playgroud)
或者将其映射到模型?
我以为Web API应该能够从表单值映射参数?
在 Typescript 中,我们有映射类型,可以将属性从一种类型映射到另一种类型。
一个常见的示例是 Partial 类型,它使泛型类型上的所有属性都成为“可选”。
我想实现相反的效果,比如“必需”,其中所有属性都被设置为“必需”,而不管它们预先的可选性如何。
这样的事可能吗?
(既然知道我的问题很肤浅,请参阅更新!)
更新:
一些背景...
我正在学习映射类型,并受到此处文档的启发
type Proxy<T> = {
get(): T;
set(value: T): void;
}
type Proxify<T> = {
[P in keyof T]: Proxy<T[P]>;
}
function proxify<T>(o: T): Proxify<T> {
// ... wrap proxies ...
}
let proxyProps = proxify(props);
Run Code Online (Sandbox Code Playgroud)
我心里想,嗯,“我想知道我们能用这个来搞什么恶作剧?”
所以我写了类似的东西:
type ProxyObservable<T> = Observable<T> & {
[P in keyof T]: ProxyObservable<T[P]>;
};
Run Code Online (Sandbox Code Playgroud)
这很酷,因为你可以给它一个这样的类型:
interface Foo {
myNum: number;
myString: string;
myObject: {
someValue: number;
anotherValue: Date;
};
}
Run Code Online (Sandbox Code Playgroud)
你会得到一个ProxyObservable<Foo> …
我在 WSL(Linux 的 Windows 子系统,Ubuntu 16.04)上使用 Docker 时遇到了最奇怪的情况。我试图将安装/home/username(或只是$HOME为了方便)绑定为容器中的卷,而不是在容器中查找我的主目录的内容,而是完全获得一些其他卷。
奇怪的是,每当我尝试绑定 mount$HOME或/home/username. 如果我是touch一个新文件,它会出现在我安装$HOME到的所有其他容器中。所有其他绑定安装到任何其他目录都可以正常工作。
例如,这些都共享同一个神秘文件夹:
docker run -it --rm -v /home/username:/test alpine sh
docker run -it --rm -v $HOME:/test alpine sh
docker run -it --rm -v $HOME:/test -v $HOME:/test2 alpine sh
Run Code Online (Sandbox Code Playgroud)
当我执行 a 时,docker volume ls没有名为 的卷/home/username,因此排除了意外拥有同名的 docker 托管卷的情况。
我正在安装的这个神秘卷是什么,为什么 docker 没有$HOME正确安装我的目录?
我有一个yaml文件,在其中我使用锚点和别名来干燥文件。这是一个docker-compose文件。简单例如如下:
version: "3.4"
x-build: &build
context: ../
services:
api:
build:
<<: *build
dockerfile: some-path/Dockerfile
image: gcr.io/some-project/api
Run Code Online (Sandbox Code Playgroud)
我使用yq然后jq将其转换为json并将其传递给,terraform以便我可以重新使用该信息docker-compose作为事实来源。
所有别名和锚点都会从结果中删除json。不是灾难,但如果能真正扩展它会更好。
我正在寻找一个可以在bash脚本中运行的命令行工具,以将上述内容json作为输入并展开锚点和别名,并将结果写入标准输出,例如:
version: "3.4"
services:
api:
build:
context: ../
dockerfile: some-path/Dockerfile
image: gcr.io/some-project/api
Run Code Online (Sandbox Code Playgroud)
有谁知道如何做到这一点?
docker ×2
typescript ×2
bash ×1
c# ×1
git ×1
mapped-types ×1
msbuild ×1
msysgit ×1
next.js ×1
smartgit ×1
ssh ×1
windows-subsystem-for-linux ×1
yaml ×1