我想在一行上添加一些文本:
sudo sed -i '5imytext 16/16' /file
Run Code Online (Sandbox Code Playgroud)
现在,我mytext 16/16在文件的第5行添加了内容,但实际上我想添加文本'mytext' 16/16(mytext在单引号之间)。
我试过了
sudo sed -i '5i'mytext' 16/16' /file
Run Code Online (Sandbox Code Playgroud)
但这没用。有人能帮我吗?
我在 docker 中有以下设置:
应用程序的 logdriver 的配置描述了 fluentd 容器。日志将保存在 ES 中并显示在 Kibana 中。
当 logdriver 配置为这样时,它可以工作:
web:
image: httpd
container_name: httpd
ports:
- "80:80"
links:
- fluentd
logging:
driver: "fluentd"
options:
fluentd-address: localhost:24224
tag: httpd.access
Run Code Online (Sandbox Code Playgroud)
fluentd 将其暴露的端口 24224 映射到主机的端口 24224 上。
fluentd:
build: ./fluentd
image: fluentd
container_name: fluentd
links:
- "elasticsearch"
ports:
- "24224:24224"
Run Code Online (Sandbox Code Playgroud)
但我不想在主机网络上暴露我的流利。我想让它在 docker 网络中保持“私有”(我只想在主机网络上映射应用程序和 kibana),如下所示:
fluentd:
build: ./fluentd
image: fluentd
container_name: fluentd
links:
- "elasticsearch"
Run Code Online (Sandbox Code Playgroud)
端口 24224 仍然公开(在 dockerfile 中),但它没有映射到主机网络上。现在我想更改我的应用程序的日志驱动程序的配置: logging: driver: "fluentd" …
我们创建一个新的 maven 构建:
def rtMaven = Artifactory.newMavenBuild()
Run Code Online (Sandbox Code Playgroud)
现在我们想在与当前阶段不同的阶段重用这个 rtMaven;就像下面的代码:
pipeline {
agent any
...
stages {
stage('stage1') {
steps {
script {
def rtMaven = Artifactory.newMavenBuild()
}
}
stage('stage2') {
steps {
script {
//REUSE rtMaven (now it's unknown)
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
是否可以重用rtMaven而无需在第二阶段再次重新定义它?
现在我们有一个错误,如:
groovy.lang.MissingPropertyException: No such property: rtMaven for class: groovy.lang.Binding
Run Code Online (Sandbox Code Playgroud) 我正忙于 OpenShift V3,对于某些事情,我需要执行以下命令:
oadm registry --config=admin.kubeconfig \
--credentials=openshift-registry.kubeconfig
oadm router <router_name> --replicas=<number> \
--credentials='/etc/openshift/master/openshift-router.kubeconfig' \
--service-account=router
Run Code Online (Sandbox Code Playgroud)
问题是:我不知道'oadm'在这种情况下的含义以及为什么必须使用它?在 OpenShift 本身中,我必须使用'oc'它,所以它可能不是特定于 OpenShift 的命令。
我有一个 docker-compose.yml,其中包含在 CentOS7 上启动 jenkins-server 的内容:
jenkins:
image: jenkins
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- $(which docker):/usr/bin/docker:ro
- /usr/lib64/libsystemd-journal.so.0:/usr/lib/x86_64-linux-gnu/libsystemd-journal.so.0
- /usr/lib64/libsystemd-id128.so.0:/usr/lib/x86_64-linux-gnu/libsystemd-id128.so.0
- /usr/lib64/libdevmapper.so.1.02:/usr/lib/x86_64-linux-gnu/libdevmapper.so.1.02
- /usr/lib64/libgcrypt.so.11:/usr/lib/x86_64-linux-gnu/libgcrypt.so.11
- /usr/lib64/libdw.so.1:/usr/lib/x86_64-linux-gnu/libdw.so.1
ports:
- "8080:8080"
Run Code Online (Sandbox Code Playgroud)
但是我无法运行撰写,因为我在$(which docker):/usr/bin/docker:ro. 我该如何解决这个问题?
错误: ERROR: Invalid interpolation format for "volumes" option in service "jenkins": "$(which docker):/usr/bin/docker:ro"
是否仍然无法包含环境变量?我正在寻找最正确的解决方案。谢谢
我们有一个前端应用程序.它是用Angular(html + css + javascript)编写的,需要由webserver(nginx)托管.Angular正在与将与后端通信的NodeJs服务器进行通信.
现在我们必须在Docker中运行它.
那么可以在一个存储库中编写2个dockerfiles吗?主要的想法是为nodejs提供1个dockerfile,它也运行bower install,npm install,...它将如下所示:
# Create app directory
RUN mkdir -p /usr/src/www
WORKDIR /usr/src/www
RUN npm install -g bower
RUN npm install -g gulp
# Install app dependencies
COPY . /usr/src/www/
RUN bower install
RUN npm install
RUN gulp build
EXPOSE port
CMD [ "node", "server.js" ]
Run Code Online (Sandbox Code Playgroud)
还有一个dockerfile,我们在其中运行一个nginx-webserver,但也包含一个nginx.conf,所以它可以指向我们node.js-container中的right/dist文件夹.nginx的dockerfile将如下所示:
# Set nginx base image
FROM nginx
# Copy custom configuration file from the current directory
COPY nginx.conf /etc/nginx/nginx.conf
Run Code Online (Sandbox Code Playgroud)
nginx.conf的一个例子
location ~* /dist {
proxy_pass http://nodejs:port; …Run Code Online (Sandbox Code Playgroud) 什么是服务器XSS和客户端XSS 之间的区别的明确解释?
我阅读了OWASP网站上的解释,但对我来说不是很清楚.我知道反映的,存储的en DOM类型.
我安装了gulp,它在我的cmd中运行良好.因此,当我尝试gulp命令时,它们运行良好.所以我要在我的cmd中走这条路:
C:\Program Files (x86)\Jenkins\workspace\project1
Run Code Online (Sandbox Code Playgroud)
我可以运行gulp(它是我的Jenkins上的github项目).但是当我在Jenkins本身(localhost)中处理我的project1时,gulp命令无法识别.詹金斯不知道吞咽.
我如何在Jenkins中整合gulp?所以我的詹金斯会知道它的命令.我读了一些关于node.js及其插件的内容.我也读过一些关于前端maven插件的内容,但它根本不清楚.
我正在研究OpenShift Origin 1.1(正在使用kubernetes作为其docker容器的编排工具)。我正在创建Pod,但是看不到构建日志。
[user@ip master]# oc get pods
NAME READY STATUS RESTARTS AGE
test-1-build 0/1 Completed 0 14m
test-1-iok8n 1/1 Running 0 12m
[user@ip master]# oc logs test-1-iok8n
Error from server: Get https://ip-10-0-x-x.compute.internal:10250/containerLogs/test/test-1-iok8n/test: dial tcp 10.0.x.x:10250: i/o timeout
Run Code Online (Sandbox Code Playgroud)
我的/var/logs/messages节目:
Dec 4 13:28:24 ip-10-0-x-x origin-master: E1204 13:28:24.579794 32518 apiserver.go:440] apiserver was unable to write a JSON response: Get https://ip-10-0-x-x.compute.internal:10250/containerLogs/test/test-1-iok8n/test: dial tcp 10.0.x.x:10250: i/o timeout
Dec 4 13:28:24 ip-10-0-x-x origin-master: E1204 13:28:24.579822 32518 errors.go:62] apiserver received an error that is …Run Code Online (Sandbox Code Playgroud) 我在Artifactory上使用Docker Registry.我可以使用docker命令拉/推图像.现在我尝试使用Jenkins pipline推送图像.
图像被调用registry-url/docker/image:latest.我在Artifactory上有一个docker存储库,它被调用docker.(我能够使用docker命令拉动并推送到这个仓库).
这个阶段描述了我的Artifactory配置:
...
stage('Deploy Docker image'){
steps {
script {
def server = Artifactory.server 'xxx'
def rtDocker = Artifactory.docker server: server
def buildInfo = rtDocker.push('registry-url/image:latest', 'docker')
//also tried:
//def buildInfo = rtDocker.push('registry-url/docker/image:latest', 'docker')
//the above results in registry/docker/docker/image..
server.publishBuildInfo buildInfo
}
}
}
...
Run Code Online (Sandbox Code Playgroud)
当我使用不同的路径时,我面临的manifest.json错误可能是正常的.我可以手动下载manifest.json : https://registry-url/artifactory/docker/image/latest/manifest.json.
我在Jenkins上使用了一个非常新版本的Docker:
Docker version 18.01.0-ce, build 03596f51b1
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.但是当我运行管道时,我在Jenkins中收到以下错误(需要50秒):
Pushing image: registry-url/image:latest
...
com.github.dockerjava.api.exception.DockerClientException: Could not push image: unknown: Not Found
at com.github.dockerjava.core.command.PushImageResultCallback.awaitSuccess(PushImageResultCallback.java:49)
at org.jfrog.hudson.pipeline.docker.utils.DockerUtils.pushImage(DockerUtils.java:60) …Run Code Online (Sandbox Code Playgroud) 根据这个问题,我发现了如何删除Teamcity中的构建
这很好用.举个例子:我有20个构建版本,我删除了构建版本12到20个.所以我的最后一个构建版本是11.但是当我执行一个新版本时,它的构建版本为21.
是否可以在12号(再次)开始下一个构建?
我知道这不是一个好方法.但这是出于测试目的,我们不想要很多构建数量.我知道这不是我们将在真实环境中使用的东西.
我有一个非常基本的PowerShell脚本:
Param(
[string]$MyWord
)
function myfunc([string] $MyWord) {
Write-Host "$MyWord"
}
myfunc @PSBoundParameters
Run Code Online (Sandbox Code Playgroud)
这是我的执行方式:
PS C:\>。\ test.ps1 -MyWord'hello' 你好
一切都很好。但是,如果-MyWord未指定,我想设置一个默认值。我尝试了这个:
Param(
[string]$MyWord='hi'
)
function myfunc([string] $MyWord) {
Write-Host "$MyWord"
}
myfunc @PSBoundParameters
Run Code Online (Sandbox Code Playgroud)
但是比我的脚本的输出还空。当我不描述参数时,它什么也没打印。(如果我指定了参数,它只会显示“ hello”)。我也尝试过:
Param(
[string]$MyWord
)
function myfunc([string] $MyWord) {
[string]$MyWord='hi'
Write-Host "$MyWord"
}
myfunc @PSBoundParameters
Run Code Online (Sandbox Code Playgroud)
但是,当然,输出总是“ hi”而不是“ hello”。即使使用参数执行脚本-MyWord 'hello'
有人可以解释我在做什么吗?
当我不使用该功能时,它按预期工作:
Param(
[string]$MyWord='hi'
)
Write-Host $MyWord
Run Code Online (Sandbox Code Playgroud)
输出:
PS C:\>。\ test.ps1 -MyWord'你好' 哈罗 PS C:\>。\ test.ps1 你好