我需要在sed中使用命令的输出作为搜索模式.我将使用echo做一个例子,但假设这可能是一个更复杂的命令:
echo "some pattern" | xargs sed -i 's/{}/replacement/g' file.txt
Run Code Online (Sandbox Code Playgroud)
该命令不起作用,因为"某些模式"有一个空格,但我认为这清楚地说明了我的问题.
如何使该命令有效?
提前致谢,
我有一个由Yarn管理的monorepo,我想利用Docker缓存层来加速我的构建,这样做我想首先复制package.json
和yarn.lock
文件,运行yarn install
然后复制其余的文件.
这是我的回购结构:
packages/one/package.json
packages/one/index.js
packages/two/package.json
packages/two/index.js
package.json
yarn.lock
Run Code Online (Sandbox Code Playgroud)
这是Dockerfile的感兴趣部分:
COPY package.json .
COPY yarn.lock .
COPY packages/**/package.json ./
RUN yarn install --pure-lockfile
COPY . .
Run Code Online (Sandbox Code Playgroud)
问题是第3个COPY
命令没有复制任何东西,我怎样才能达到预期的效果?
在dockerfile中,我想为globbing定义的文件指定一个复制操作,我希望它也可以用路径复制.所以,像这样:
COPY ./src/**/project.json /app/**/
Run Code Online (Sandbox Code Playgroud)
考虑到我有以下结构:
./src/bar/project.json
./src/foo/project.json
Run Code Online (Sandbox Code Playgroud)
目的地应如下所示:
/app/bar/project.json
/app/foo/project.json
Run Code Online (Sandbox Code Playgroud)
但显然,这不起作用,如果我有机会,我真的不想单独指定所有COPY操作.知道怎么做吗?
请注意,我基本上不能忽略其他文件
.dockerignore
,因为我将在破坏软件包安装操作后从同一文件夹中复制其他文件.所以,dockerfile与此类似:Run Code Online (Sandbox Code Playgroud)FROM microsoft/aspnet:1.0.0-rc1-update1 COPY ./src/**/project.json /app/**/ WORKDIR /app/ModernShopping.Auth RUN ["dnu", "restore"] ADD ./src /app EXPOSE 44300 ENTRYPOINT ["dnx", "web"]