小编iam*_*nat的帖子

使用docker设置开发环境

我在为我的团队设置开发环境的docker时面临一些问题.至今:

  1. 我使用基本图像来启动容器

    docker run -t -i ubuntu:latest "/bin/bash"
    
    Run Code Online (Sandbox Code Playgroud)
  2. 我在其中安装了所有编译和构建工具

  3. 我提交了该图像并将其推送到我们的本地docker服务器

    docker commit e239ab... 192.168.10.100:5000/team-dev:beta
    
    Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.现在,作为团队成员:

  1. 我在我的计算机上拉开了开发环境图像

    docker pull 192.168.10.100:5000/team-dev:beta
    
    Run Code Online (Sandbox Code Playgroud)
  2. 我开始一个容器:

    docker run -t -i 5cca4... "/bin/bash"
    
    Run Code Online (Sandbox Code Playgroud)

在这一点上,我正在考虑将我的容器作为一种远程机器,我可以通过SSH连接并工作.

我尝试git clone从容器内部做一个,但由于一个公钥问题,这会失败.我手动将id_rsa*文件复制到docker中,克隆工作正常.然后我尝试编辑一些源文件,但我的vim配置,bash配置,一切都被抛弃了,因为这是一个全新的OS环境.什么工作真的很好我的整个依赖版本的构建环境.


这些是我想要帮助我解决这个问题的可能解决方案.

  1. 拉动基本映像后,使用dockerfile将所有环境变量从主机添加到docker.

    缺点:每次我的主机环境改变bash/vim/git我需要更新dockerfile

  2. 使用主机到容器的卷.Git克隆并编辑主机中的文件.从docker内部运行构建脚本和编译.

    缺点:如果需要,数据卷中的内容不能用于更新图像.我不知道这是否是我应该关心的事情.

或者我是以错误的方式接近这个?

docker

17
推荐指数
3
解决办法
9261
查看次数

在嵌套对象的所有字段上进行弹性搜索嵌套查询以匹配

基本问题如下:是否有方便的方法在嵌套查询的所有字段上指定多字段匹配?对于正常的查询{ match : { _all : "query string" }}工作.这在嵌套查询中不起作用,可能是因为嵌套对象没有_all?

更详细的问题如下:

我有一个名为"Parent"的嵌套文档,如下所示:

{
    "children" : [
        { 
            "field_a": "value_a_1",
            "field_b" : "value_b_1",
            "field_c" : [ {
                "field_c_a" : "value_c_a_1",
                "field_c_b" : "value_c_b_1"
            } ]
        },
        { 
            "field_a": "value_a_2",
            "field_b" : "value_b_2",
            "field_c" : [ {
                "field_c_a" : "value_c_a_2",
                "field_c_b" : "value_c_b_2"
            } ]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

这是我用来制作子嵌套对象的映射:

"Parent" : {
    "properties" : {
        "children" : {
            "type" : "nested",
            "include_in_parent" : true
                }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是一个查询,我想在所有子字段查询和术语查询中使用匹配选择几个术语:

"query" : { …
Run Code Online (Sandbox Code Playgroud)

elasticsearch

7
推荐指数
1
解决办法
1501
查看次数

Aeson和镜头有错误处理

我对镜头的魔力很新,所以我遇到了一些麻烦.

参考:https://www.fpcomplete.com/user/tel/lens-aeson-traversals-prisms

可以通过以下方式遍历JSON对象:

val ^? nth 0 . key "someObject" . key "version" . nth 2
Run Code Online (Sandbox Code Playgroud)

对于类似于的JSON对象:

"[{\"someObject\": {\"version\": [1, 0, 3]}}]"
Run Code Online (Sandbox Code Playgroud)

Maybe Monad在整个过程中使用,所以如果任何"访问者"失败,我会得到一个Nothing.

我也想传播失败,以便我知道访问者失败了.

我能想到的唯一方法就是传递一组访问器,按顺序应用它们,并在任何失败点返回错误.像这样的东西:

import Data.Aeson
import Data.Text
import Data.Vector ((!?))
import qualified Data.HashMap.Strict  as HM

data MyAccessor = Nth Int | Key Text 

withFailure :: Value -> [MyAccessor] -> Either String Value
withFailure val [] =  Right val 
withFailure val (x:xs) = case x of
    Nth i -> case val of        
        (Array …
Run Code Online (Sandbox Code Playgroud)

json haskell aeson haskell-lens

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

配置cabal上传以使用本地hackage-server

我安装了一个本地hackage-server用于开发192.168.1.100:8080.在我开发之后,打包cabal sdist我必须192.168.1.100:8080在我的浏览器上并手动上传包.

这非常繁琐,尤其是在多个包装正在进行等冲刺的情况下,我只是喜欢使用cabal upload.

对于名为my-pacakge.tar.gz的包,运行cabal upload结果为:

Uploading dist/my-package-0.1.1.0.tar.gz...
Error: dist/my-package-0.1.1.0.tar.gz: 404 Not Found
Error: Page not found

Sorry, it's just not here.
Run Code Online (Sandbox Code Playgroud)

我的cabal配置的修改部分如下所示:

...    
remote-repo: hackage.haskell.org:http://hackage.haskell.org/packages/archive
remote-repo: my.hackage:http://192.168.1.100:8080/packages/archive
...
Run Code Online (Sandbox Code Playgroud)

第二行优先考虑本地hackage over hackage.haskell for cabal install

cabal upload该如何设置上传到本地hackage?

haskell cabal hackage

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

如何对 Kubernetes 应用程序进行版本控制?

我当然检查过 helm.sh,但乍一看整个设置似乎有点复杂(helm-client 和tiller-server)。在我看来,在大多数情况下,我只需拥有一个 helm-client 就可以逃脱。

这就是我目前所做的

假设我有一个由 3 个服务组成的项目,即。postgres, express, nginx.

我创建了一个名为的目录product-release,如下所示:

product-release/
    .git/
    k8s/
        postgres/
            Deployment.yaml
            Service.yaml
            Secret.mustache.yaml   # Needs to be rendered by the dev before use
        express/
            Deployment.yaml
            Service.yaml
        nginx/
            Deployment.yaml
            Service.yaml
    updates/
        0.1__0.2/
            Job.yaml    # postgres schema migration
            update.sh   # k8s API server scritps to patch/replace existing k8s objects, and runs the state change job
Run Code Online (Sandbox Code Playgroud)

通常的 git 东西现在可以应用了。每次进行更改时,我都会更改规范文件,测试它们,编写更新脚本以帮助从上一个版本移动到当前版本,然后提交并标记它。

问题

  1. 到目前为止,这对我有用,但这是“正确的方法”吗?
  2. 为什么helm要有分蘖服务器?在客户端做模板不是更简单吗?当然,如果您想将部署活动与应用程序知识(如机密)分开,模板必须在服务器上进行,否则为什么呢?

kubernetes microservices kubernetes-helm

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

如何将.csv文件导入Hasura PostgreSQL数据库?

我有.csv文件中的数据,我想导入我的Hasura集群的PostgreSQL数据库实例.最好的方法是什么?

csv postgresql hasura

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