want
want

Reputation: 105

How to enlarge memory limit in docker-compose

I used docker-compose to run a service but it crashed, I entered the container and got resource info by 'top' as below.

top - 13:43:25 up 1 day,  6:46,  0 users,  load average: 1.82, 0.74, 0.52
Tasks:   3 total,   1 running,   2 sleeping,   0 stopped,   0 zombie
%Cpu(s): 32.2 us, 22.4 sy,  0.0 ni, 40.1 id,  3.0 wa,  0.0 hi,  2.3 si,  0.0 st
KiB Mem:   2047040 total,  1976928 used,    70112 free,      172 buffers
KiB Swap:  1048572 total,  1048572 used,        0 free.    14588 cached Mem

So I think my docker is out of memory.

I've tried add

mem_limit: 5g
memswap_limit: 5g
mem_reservation: 5g

into docker-compose.yml

But it seems not work. My question is, how to enlarge docker's memory limit by docker-compose.

Upvotes: 1

Views: 7952

Answers (3)

Carlos
Carlos

Reputation: 1806

If this is on a machine running Docker Desktop, then you would have to open the Docker Desktop preferences and go to Resources section to tweak how much of your host resources the Docker Engine can use.

Upvotes: 2

samwise
samwise

Reputation: 2257

The docker engine has a compatiblity mode which aims to make transition from compose v2 files to v3 easier. As a result of that, it is possible to partially use the swarm config (deploy) to specifiy resource limits for standard docker-compose usage:

To run in compatiblity mode just add the --compatiblity flag like this:

docker-compose --compatibility up myservice

and you can use a compose file like this:

version: '3.5'
services:
    myservice:
        image: postgres:12-alpine
        deploy:
            resources:
                limits:
                    cpus: '0.50'
                    memory: 50M

Upvotes: 2

yamenk
yamenk

Reputation: 51738

As stated in the documentation the following fields can be used in docker-compose to control memory and cpu resources.

deploy:
  resources:
    limits:
      cpus: '0.001'
      memory: 50M
    reservations:
      cpus: '0.0001'
      memory: 20M

Note however, by default there are no limits for the container memory usage, so setting the memory flags will unlikely help.

Upvotes: -1

Related Questions