我有一个Dockerfile,我指的是docker-compose.yml.
我希望docker-compose.yml中的卷安装发生在Dockerfile之前RUN
.
Dockerfile:
FROM node
WORKDIR /usr/src/app
RUN npm install --global gulp-cli \
&& npm install
ENTRYPOINT gulp watch
Run Code Online (Sandbox Code Playgroud)
泊坞窗,compose.yml
version: '2'
services:
build_tools:
build: docker/gulp
volumes_from:
- build_data:rw
build_data:
image: debian:jessie
volumes:
- .:/usr/src/app
Run Code Online (Sandbox Code Playgroud)
首先完成Dockerfile,然后从docker-compose安装它是完全合理的,但有没有办法解决它.
我想保持Dockerfile的通用性,同时从compose中传递更多特定的位.也许这不是最好的做法?
根据文档,你应该能够让Traefik使用以下方法执行302重定向:
traefik.ingress.kubernetes.io/redirect-regex
traefik.ingress.kubernetes.io/redirect-replacement
我的目标是简单地www.
从地址中删除.
这是我尝试过的,但我找不到404服务.
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: www-redirect
namespace: public
annotations:
kubernetes.io/ingress.class: traefik
traefik.ingress.kubernetes.io/redirect-regex: ^https?://www.example.com/(.*)
traefik.ingress.kubernetes.io/redirect-replacement: https://example.com/$1
spec:
rules:
- host: www.example.com
Run Code Online (Sandbox Code Playgroud)
不幸的是,文档没有明确说明如何使用它们.在撰写本文时,唯一的谷歌就是文档(上图).
我目前的工作(假设它将有助于解释问题)是将www.
流量路由到返回302的nginx.
server {
listen 80;
server_name www.example.com;
return 302 https://example.com$request_uri;
}
Run Code Online (Sandbox Code Playgroud)
这看起来有点矫枉过正.
我试图在OSX 10.7.5(Lion)上安装Java 7(又名1.7).
不幸的是,这似乎已经把Java混为一谈,我不知道如何解决这个问题.目前,当我尝试运行Eclipse时,我收到错误:
JVM共享库"/System/Library/Frameworks/JavaVM.framework"不包含JNI_CreateJavaVM符号.
像Minecraft和PhpStorm这样的程序将完全崩溃而没有错误.
在终端中运行'java -version'给了我:
java version "1.6.0_37"
Java(TM) SE Runtime Environment (build 1.6.0_37-b06-434-11M3909)
Java HotSpot(TM) 64-Bit Server VM (build 20.12-b01-434, mixed mode)
Run Code Online (Sandbox Code Playgroud)
我理解的是直接安装Java 7.不幸的是,在OSX 10.7.5中删除了Utilities - > Java Preferences,并尝试加载系统首选项 - > Java窗格不起作用(它告诉我它会在新窗口中打开但不会,当按钮显示重新加载时,单击它不会执行任何操作).
我已经尝试重新安装各种版本的JRE和JDK无济于事.
无论如何都要把这个地方重新开始并重新开始,或者我错过了一些非常明显的东西?
我想在管道中使用Slack Notification Plugin,这很简单:
slackSend color: 'danger', message: 'Everything broke'
Run Code Online (Sandbox Code Playgroud)
但是,如果slackSend不存在,我不希望构建中断。有没有办法先检查一下?
我想通过运行多个命令exec()
,但我不想在屏幕上输出任何内容。然而,我确实想保留输出,以便我可以在脚本运行时控制详细程度。
这是我的课程:
<?php
class System
{
public function exec($command, array &$output = [])
{
$returnVar = null;
exec($command, $output, $returnVar);
return $returnVar;
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,大多数应用程序都会将大量不相关的内容放入其中stderr
,而我似乎无法阻止这些内容。例如,这是运行git clone
它的输出:
Cloning into '/tmp/directory'...
remote: Counting objects: 649, done.
remote: Compressing objects: 100% (119/119), done.
remote: Total 649 (delta 64), reused 0 (delta 0), pack-reused 506
Receiving objects: 100% (649/649), 136.33 KiB | 0 bytes/s, done.
Resolving deltas: 100% (288/288), done.
Checking connectivity... done.
Run Code Online (Sandbox Code Playgroud)
我看到其他问题声称使用输出缓冲区可以工作,但它似乎不起作用
<?php
class System
{ …
Run Code Online (Sandbox Code Playgroud) 我想在 Concourse 中为我的 Web 应用程序设置构建管道。该应用程序是使用 Node.js 构建的。
计划是做这样的事情:
,-> build style guide -> dockerize
source code -> npm install -> npm test -|
`-> build website -> dockerize
Run Code Online (Sandbox Code Playgroud)
问题是,在 npm install 后,创建了一个新容器,因此node_modules
目录丢失。我想传递node_modules
到后面的任务,但因为它位于源代码“内部”,所以它不喜欢它并给了我
invalid task configuration:
you may not have more than one input or output when one of them has a path of '.'
Run Code Online (Sandbox Code Playgroud)
这是我的工作设置
jobs:
- name: test
serial: true
disable_manual_trigger: false
plan:
- get: source-code
trigger: true
- task: npm-install
config:
platform: linux
image_resource: …
Run Code Online (Sandbox Code Playgroud) 我想在 kubernetes 模板文件中描述我的服务。是否可以参数化诸如 number 或 之类的值replicas
,以便我可以在部署时进行设置。
这里的目标是能够在 minikube(我只需要一个副本)中本地运行我的服务,并使它们尽可能接近那些在 staging/live 中运行的服务。
我希望能够更改副本的数量,使用本地安装的卷并进行其他小的更改,而不必编写不可避免地彼此不同的单独模板文件。
我们正在尝试运行具有三个名称空间的kubernetes集群:
public
包含任何人都可以访问的服internal
包含只应由工作人员访问的服务engineering
包含只应对开发人员可见的服务在internal
和engineering
命名空间与相互认证保护,各自使用不同的证书颁发机构.
我们使用Traefik来管理这些服务的入口,但是,按照kubernetes指南设置Traefik,授予每个Traefik权限实例以查看所有命名空间中的入口.这意味着您可以internal
通过命名空间中运行的Traefik实例在public
命名空间中使用服务,从而绕过mututal身份验证.
我们通过在入口处设置主机来解决这个问题,但这意味着必须为每个环境单独定义入口(例如,host: engineering.example.com
不同host: engineering.staging.example.com
).我们宁愿让主机退出入口配置.
从理论上讲,使用RBAC我们应该能够限制Traefik允许在RBAC本指南中建议的内容资源.
我的理解是它仍然需要ClusterRole权限,例如:
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: traefik-ingress-controller
rules:
- apiGroups:
- ""
resources:
- services
- endpoints
- secrets
verbs:
- get
- list
- watch
- apiGroups:
- extensions
resources:
- ingresses
verbs:
- get
- list
- watch
Run Code Online (Sandbox Code Playgroud)
但是,使用Role绑定而不是ClusterRole绑定将限制这些权限仅限于给定服务帐户命名空间中的权限.因此,如果服务帐户位于工程命名空间中:
---
apiVersion: v1
kind: ServiceAccount
metadata: …
Run Code Online (Sandbox Code Playgroud) 我很难获得Auth0以JWT格式返回访问令牌。我需要JWT格式的文件,以便可以使用Java JWT库进行验证。
我正在使用Auth0 lock
登录,并用于/oauth/token
获取访问令牌-我尝试将受众设置为我们的API标识符(包括锁定auth参数和/oauth/token
有效负载在内的多个位置),但未成功-返回访问令牌,但未返回JWT。
或者,是否有一个Java库用于验证“本机” Auth0访问令牌?
var options = {
auth: {
redirectUrl: '<redirect_link>',
responseType: 'code',
params: {
audience: '<API_identifier>',
scope: 'openid offline_access'
}
},
allowedConnections: ['Username-Password-Authentication']
};
var lock = new Auth0Lock('<clientId>', '<auth0_Host>', options);
lock.show();
Run Code Online (Sandbox Code Playgroud)
返回的代码用于POST https://<host>/oauth/token
与数据:
client_id=<client_id>&redirect_uri=<redirect_url>&client_secret=<client_secret>&code=<returned_code>&grant_type=authorization_code&audience=<API_identifier>
Run Code Online (Sandbox Code Playgroud)
哪个成功,但是访问令牌不是JWT,例如: "access_token":"sG99DAJI789SYgTj"
使用范围openid返回JWT格式的id_token,但是从阅读文档开始,不应将此令牌用于API授权。