我试图在docker容器中设置一些资源限制。我能够将以下值添加到docker-compose中。
resources:
limits:
cpus: '2'
memory: 4GB
reservations:
cpus: '1'
memory: 4GB
我该如何通过gitlab管道将它们传递给正在构建的容器,但将它们设置为变量?
我可以通过添加;来覆盖java堆大小;
java_xmx=${JAVA_XMX_OVERRIDE}
和
JAVA_XMX_OVERRIDE: "-Xmx2048m"
我如何对资源限制做同样的事情?
感谢你可以在docker compose中使用变量,这些变量可以通过start命令传播。
compose.yaml:
version: '3.9'
services:
httpd:
container_name: httpd-test
image: httpd
deploy:
resources:
limits:
memory: ${MEMORY}
开始容器:
$ 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
你应该能够在你的gitlab管道中定义一个环境变量:
variables:
MEMORY: 60M
我最终在管道中添加了一个docker-compose文件模板,在模板中我使用ansible修改了资源限制
- name: Compose Docker | Get text block for service set_fact:
service_content: "{{ lookup('template', 'templates/docker-compose-service.yml.j2') }}" tags:
- compose_docker