小编pka*_*mol的帖子

docker-in-docker(dind)服务在gitlab ci中的作用

根据官方gitlab文档,docker buildci管道内启用的一种方法是使用dind服务(就gitlab-ci 服务而言).

但是,由于在docker执行程序上运行ci作业总是如此,因此docker:latest也需要图像.

有人能解释一下:

  • docker:dinddocker:latest图像有什么区别?
  • (最重要的):为什么这两个服务和所需要的泊坞窗图像(如所示在这个例子中,从GitHub的文档链接)来执行如docker buildwhithin一个CI的工作吗?不是docker:latest图像(作业将在其中执行!)包含docker守护程序(我认为docker-compose也是),它们是我们需要的命令所必需的工具(例如docker build,docker push等等)?

除非我错了,否则问题或多或少变成:

为什么docker客户端和docker守护程序不能驻留在同一个docker(启用)容器中

continuous-integration gitlab docker gitlab-ci

37
推荐指数
1
解决办法
1万
查看次数

使 Terraform 资源键成为多行

google_logging_metric我正在Terraform 中声明资源(使用 version 0.11.14

我有以下声明

resource "google_logging_metric" "my_metric" {
  description = "Check for logs of some cron job\t"
  name        = "mycj-logs"
  filter      = "resource.type=\"k8s_container\" AND resource.labels.cluster_name=\"${local.k8s_name}\" AND resource.labels.namespace_name=\"workable\" AND resource.labels.container_name=\"mycontainer-cronjob\" \nresource.labels.pod_name:\"my-pod\""
  project     = "${data.terraform_remote_state.gke_k8s_env.project_id}"

  metric_descriptor {
    metric_kind = "DELTA"
    value_type  = "INT64"
  }
}

Run Code Online (Sandbox Code Playgroud)

有没有办法使filter字段多行?

local变量的存在"${local.k8s_name}使得它有点具有挑战性。

terraform terraform-provider-gcp

29
推荐指数
1
解决办法
3万
查看次数

无法安装 kubernetes 类型的 CRD

我正在设置一个kind集群

\n
Creating cluster "kind" ...\n \xe2\x9c\x93 Ensuring node image (kindest/node:v1.22.1)  \n \xe2\x9c\x93 Preparing nodes    \n \xe2\x9c\x93 Writing configuration  \n \xe2\x9c\x93 Starting control-plane \xef\xb8\x8f \n \xe2\x9c\x93 Installing CNI  \n \xe2\x9c\x93 Installing StorageClass  \n \xe2\x9c\x93 Joining worker nodes  \n \xe2\x9c\x93 Waiting \xe2\x89\xa4 5m0s for control-plane = Ready \xe2\x8f\xb3 \n \xe2\x80\xa2 Ready after 0s \n
Run Code Online (Sandbox Code Playgroud)\n

然后尝试按照版本 1.6 的说明安装 ECK 运算符

\n
kubectl apply -f https://download.elastic.co/downloads/eck/1.6.0/all-in-one.yaml\n
Run Code Online (Sandbox Code Playgroud)\n

但是该过程失败了,好像kind不支持 CRD...是这样吗?

\n
namespace/elastic-system created\nserviceaccount/elastic-operator created\nsecret/elastic-webhook-server-cert created\nconfigmap/elastic-operator created\nclusterrole.rbac.authorization.k8s.io/elastic-operator created\nclusterrole.rbac.authorization.k8s.io/elastic-operator-view …
Run Code Online (Sandbox Code Playgroud)

kubernetes kind

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

在Ubuntu上安装PySide的推荐方法

在Ubuntu中设置PySide进行开发的推荐方法是什么?

  1. sudo apt-get install python3-pyside
  2. sudo pip install pyside
  3. sudo easy_install pyside

ubuntu pyside

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

在烧瓶应用程序中设置和检索环境变量

我想使用 python3/flask 构建一个非常简单的 REST api。

举例来说,我想将我的SECRET_KEYrequired by设置flask为 env var。

推荐的方法是什么?

我知道python-dotenv允许(或者我应该说需要?).flaskenv带有 env vars的文件以以下形式设置为键值对的包

SECRET_KEY="my_secret_key"
DB_NAME="mydatabase"
Run Code Online (Sandbox Code Playgroud)

等等。

然后(我假设)我可以创建一个settings.py文件,例如

import os
SECRET_KEY = os.getenv('SECRET_KEY`)
Run Code Online (Sandbox Code Playgroud)

然后import settings对我的烧瓶文件等执行。

我的主要问题是如何在容器化环境中进行调整,其中不会有这样的.flaskenv文件,但相应的变量将作为容器本身中的运行时环境变量可用(例如通过其编排器)

上面的形式settings.py是否能够在没有 的情况下检索环境变量.flaskenv

python environment-variables flask docker

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

Docker 容器不健康但日志中没有错误

我正在使用官方docker-compose 文件airflow启动它。

\n

我的一些容器看起来不健康:

\n
34d8698d67e7   apache/airflow:2.0.2   "/usr/bin/dumb-init \xe2\x80\xa6"   31 minutes ago   Up 28 minutes (unhealthy)   0.0.0.0:5555->5555/tcp, :::5555->5555/tcp, 8080/tcp   airflow_flower_1\na291cf238b9f   apache/airflow:2.0.2   "/usr/bin/dumb-init \xe2\x80\xa6"   31 minutes ago   Up 29 minutes               8080/tcp                                              airflow_airflow-init_1\nfdb20e9152f3   apache/airflow:2.0.2   "/usr/bin/dumb-init \xe2\x80\xa6"   31 minutes ago   Up 29 minutes (unhealthy)   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp             airflow_airflow-webserver_1\nabf5a16aa846   apache/airflow:2.0.2   "/usr/bin/dumb-init \xe2\x80\xa6"   31 minutes ago   Up 29 minutes               8080/tcp                                              airflow_airflow-worker_1\nf6dc352f407b   apache/airflow:2.0.2   "/usr/bin/dumb-init \xe2\x80\xa6"   31 minutes ago   Up 28 minutes               8080/tcp                                              airflow_airflow-scheduler_1\n12dfc71e518f   redis:latest           "docker-entrypoint.s\xe2\x80\xa6"   31 minutes ago   Up 29 minutes (healthy)     0.0.0.0:6379->6379/tcp, …
Run Code Online (Sandbox Code Playgroud)

docker docker-compose airflow

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

如何通过编辑yml文件更新部署

官方的kubernetes指南通过执行以下命令行来指导更新部署set

kubectl set image deployment/nginx-deployment nginx=nginx:1.9.1
Run Code Online (Sandbox Code Playgroud)

或通过内联编辑(我猜将会启动默认编辑器)

kubectl edit deployment/nginx-deployment
Run Code Online (Sandbox Code Playgroud)

但是,由于需要使my-deployment.yml文件脱机(运行和部署来自何处),这两个过程使一致性变得更加困难。(并且这剥夺了使清单保持版本控制的优势)。

有没有办法

  • 通过文件启动部署
  • 在需要时执行对同一文件的更新
  • 通过指向相同的更新文件来更新部署?

kubernetes

11
推荐指数
1
解决办法
8557
查看次数

使用自定义容器映像在本地测试 AWS lambda

我正在尝试测试使用自定义容器映像运行/调用的新添加功能lambda,因此我从AWS python:3.8基础映像构建一个非常简单的映像,如下所示:

\n
FROM public.ecr.aws/lambda/python:3.8\n\n\nCOPY myfunction.py ./\n\nCMD ["myfunction.py"]\n\n
Run Code Online (Sandbox Code Playgroud)\n

这是myfunction.py

\n
FROM public.ecr.aws/lambda/python:3.8\n\n\nCOPY myfunction.py ./\n\nCMD ["myfunction.py"]\n\n
Run Code Online (Sandbox Code Playgroud)\n

我的问题如下:构建完成后:

\n
docker build --tag custom .\n
Run Code Online (Sandbox Code Playgroud)\n

考虑到我没有公开任何 Web 端点并假设我正在成功地启动自定义容器,我现在如何调用我的 lambda(尽管就handler=我是否正确配置了处理程序而言,这部分有点令人不安)

\n
\xe2\x96\xb6 docker run -p 9000:8080 -it custom\nINFO[0000] exec \'/var/runtime/bootstrap\' (cwd=/var/task, handler=) \n
Run Code Online (Sandbox Code Playgroud)\n

简单的卷曲当然会失败

\n
\xe2\x96\xb6 curl -XGET http://localhost:9000                                                                                                                                                                       \n404 page not found\n
Run Code Online (Sandbox Code Playgroud)\n

amazon-web-services docker aws-lambda

11
推荐指数
1
解决办法
1万
查看次数

Terraform:安全组定义中不允许自引用

我正在尝试创建一个sg terraform plan.

我希望特定SG的所有实例都允许它们之间的所有通信,因此我将SG本身添加到入口规则中,如下所示:

resource "aws_security_group" "rancher-server-sg" {
  vpc_id = "${aws_vpc.rancher-vpc.id}"
  name = "rancher-server-sg"
  description = "security group for rancher server"

  ingress {
      from_port = 0
      to_port = 0
      protocol = -1
      security_groups = ["${aws_security_group.rancher-server-sg.id}"]              
  }
Run Code Online (Sandbox Code Playgroud)

但是在跑步时terraform plan,我得到:

terraform plan

但是,在terraform plan控制台中,我可以在入站规则中添加SG名称,我看到我可以添加组本身(即自引用).

这是为什么?

编辑:也试过这个没有成功:


Run Code Online (Sandbox Code Playgroud)

amazon-web-services terraform aws-security-group terraform-provider-aws

10
推荐指数
1
解决办法
4581
查看次数

使用 golang-migrate 时出现脏数据库版本错误

我是golang-migrate的新用户。

我已经运行了一些成功执行的迁移。

我处于开发模式,所以我想在psqlshell 中重新运行迁移,并在连接到我的数据库后,我执行了drop database schema_migrations

现在的问题是,当我运行执行迁移的代码时(如下所示)


func RunMigrations() {
    m, err := migrate.New(
        "file://db/migrations",
        "postgres://postgres:postgres@localhost:5432/mydatabase?sslmode=disable")
    if err != nil {
        log.Fatal(err)
    }
    if err := m.Up(); err != nil {
        if err.Error() == "no change" {
            log.Println("no change made by migration scripts")
        } else {
            log.Fatal(err)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到这个错误

脏数据库版本 2. 修复和强制版本。

这个错误是关于什么的,我该如何解决?

migration go golang-migrate

10
推荐指数
1
解决办法
9388
查看次数