小编Dan*_*elM的帖子

Docker在运行之前组合卷安装

我有一个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中传递更多特定的位.也许这不是最好的做法?

docker dockerfile docker-compose

27
推荐指数
2
解决办法
2万
查看次数

将Traefik中的一个域重定向到另一个域

根据文档,你应该能够让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)

这看起来有点矫枉过正.

kubernetes traefik kubernetes-ingress

13
推荐指数
1
解决办法
1696
查看次数

在OSX上重新安装Java 7 JDK

我试图在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无济于事.

无论如何都要把这个地方重新开始并重新开始,或者我错过了一些非常明显的东西?

java macos installation

12
推荐指数
1
解决办法
7593
查看次数

检查Jenkins Pipeline(Groovy)中是否存在插件

我想在管道中使用Slack Notification Plugin,这很简单:

slackSend color: 'danger', message: 'Everything broke'
Run Code Online (Sandbox Code Playgroud)

但是,如果slackSend不存在,我不希望构建中断。有没有办法先检查一下?

groovy jenkins jenkins-plugins jenkins-pipeline

6
推荐指数
1
解决办法
1187
查看次数

捕获/抑制 php exec 的所有输出,包括 stderr

我想通过运行多个命令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)

php stdout exec stderr

5
推荐指数
1
解决办法
1792
查看次数

Concourse CI - 在源代码中构建工件,将所有内容传递给下一个任务

我想在 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)

node.js npm concourse

5
推荐指数
1
解决办法
4427
查看次数

根据环境调整 Kubernetes 配置

我想在 kubernetes 模板文件中描述我的服务。是否可以参数化诸如 number 或 之类的值replicas,以便我可以在部署时进行设置。

这里的目标是能够在 minikube(我只需要一个副本)中本地运行我的服务,并使它们尽可能接近那些在 staging/live 中运行的服务。

我希望能够更改副本的数量,使用本地安装的卷并进行其他小的更改,而不必编写不可避免地彼此不同的单独模板文件。

kubernetes kubectl minikube

5
推荐指数
1
解决办法
2903
查看次数

Traefik的多个实例在不同的kubernetes名称空间中

我们正在尝试运行具有三个名称空间的kubernetes集群:

  • public 包含任何人都可以访问的服
  • internal 包含只应由工作人员访问的服务
  • engineering 包含只应对开发人员可见的服务

internalengineering命名空间与相互认证保护,各自使用不同的证书颁发机构.

我们使用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)

kubernetes traefik kubernetes-ingress

4
推荐指数
1
解决办法
2258
查看次数

Auth0 JWT访问令牌

我很难获得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授权。

token oauth-2.0 jwt openid-connect auth0

2
推荐指数
1
解决办法
726
查看次数