通过 gitlab CICD 将 Docker 资源限制设置为变量

Cal*_*ice 5 variables gitlab docker cicd

我正在尝试在 docker 容器中设置一些资源限制。我可以将以下值添加到 docker-compose.yml 文件中以设置 docker 资源限制;

      resources:
        limits:
          cpus: '2'
          memory: 4GB
        reservations:
          cpus: '1'
          memory: 4GB
Run Code Online (Sandbox Code Playgroud)

我如何通过 gitlab 管道将它们传递给正在构建的容器,但将它们设置为变量?

我能够通过添加来覆盖 java 堆大小;

java_xmx=${JAVA_XMX_OVERRIDE}

和价值

JAVA_XMX_OVERRIDE: "-Xmx2048m"

我如何对资源限制做同样的事情?

谢谢

Sla*_*sky 4

您可以在 docker compose 中使用变量,您可以通过启动命令传播这些变量。

撰写.yaml:

version: '3.9'

services:
  httpd:
    container_name: httpd-test
    image: httpd
    deploy:
      resources:
        limits:
          memory: ${MEMORY}
Run Code Online (Sandbox Code Playgroud)

启动容器:

$ MEMORY=60M docker-compose up -d
$ docker stats
CONTAINER ID   NAME              CPU %     MEM USAGE / LIMIT     MEM %     NET I/O           BLOCK I/O     PIDS
ace0d6d638e1   httpd-test        0.00%     26.86MiB / 60MiB      44.77%    4.3kB / 0B        0B / 0B       82
Run Code Online (Sandbox Code Playgroud)

您应该能够在 gitlab 管道中定义环境变量:

variables:
  MEMORY: 60M
Run Code Online (Sandbox Code Playgroud)