我无法指定CPU&版本3中指定的服务的内存。
使用版本2,它可以正常使用" mem_limit" &安培; " cpu_shares"服务下的参数。但是在使用版本3时失败了,将它们置于部署部分并不值得,除非我使用swarm模式。
有人可以帮忙吗?
version: "3"
services:
node:
build:
context: .
dockerfile: ./docker-build/Dockerfile.node
restart: always
environment:
- VIRTUAL_HOST=localhost
volumes:
- logs:/app/out/
expose:
- 8083
command: ["npm","start"]
cap_drop:
- NET_ADMIN
- SYS_ADMIN
答案 0 :(得分:36)
deploy:
resources:
limits:
cpus: '0.001'
memory: 50M
reservations:
cpus: '0.0001'
memory: 20M
更多:https://docs.docker.com/compose/compose-file/#resources
在特定情况下:
version: "3"
services:
node:
image: USER/Your-Pre-Built-Image
environment:
- VIRTUAL_HOST=localhost
volumes:
- logs:/app/out/
command: ["npm","start"]
cap_drop:
- NET_ADMIN
- SYS_ADMIN
deploy:
resources:
limits:
cpus: '0.001'
memory: 50M
reservations:
cpus: '0.0001'
memory: 20M
volumes:
- logs
networks:
default:
driver: overlay
注意:
另请注意: Swarm模式下的网络不会桥接。如果您只想在内部连接,则必须连接到网络。您可以1)在其他撰写文件中指定外部网络,或者必须使用--attachable参数创建网络(docker network create -d overlay My-Network --attachable) 否则你必须像这样发布端口:
ports:
- 80:80
答案 1 :(得分:16)
Docker Compose 不支持 deploy
键。仅当您在Docker堆栈中使用版本3的YAML文件时,才会受到尊重。
当您向文件deploy
添加docker-compose.yml
键,然后运行docker-compose up -d
警告:某些服务(数据库)使用“ deploy”键,该键为 忽略了。 Compose不支持“部署”配置-使用
docker stack deploy
部署到群集。
文档(https://docs.docker.com/compose/compose-file/#deploy)说:
指定与部署和运行有关的配置 服务。这仅在使用docker部署到集群时生效 堆栈部署,并被docker-compose up和docker-compose忽略 运行。
答案 2 :(得分:0)
我知道这个话题有点老,看起来很陈旧,但是无论如何我都可以使用这些选项:
deploy:
resources:
limits:
cpus: '0.001'
memory: 50M
使用3.7版的docker-compose时
对我来说有帮助的是使用以下命令:
docker-compose ---compatibility up
--compatibility
标志代表(摘自文档):
If set, Compose will attempt to convert deploy keys in v3 files to their non-Swarm equivalent
这很好,我不必将docker-compose文件恢复到v2。