I did a basic docker setup with node and mongo. But running
docker compose up
Takes many minutes. This is probably a mistake I guess?
Any ideas what could cause something like this?
This is my Dockerfile
COPY package*.json .
COPY . .
RUN npm ci
RUN npm run build
CMD ["npm", "start"]
and this is my docker-compose.yml
# mongo db
# api gags
I have a .dockerignore aswell which looks like this:
This currently output after running docker compose up in the terminal is this
[+] Building 525.5s (2/3)
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 31B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 34B 0.0s
=> [internal] load metadata for docker.io/library/node:alpine 525.3s
if you run
docker-compose up -d it checks if there is already an image matching the corresponding lines in your
docker-compose.yml. If not it fetches it from the registry or (in your case) builds it.
Building an image can take some time depending on the work to be done and the speed of your system and/or your network-connection.
So the next start should be faster as there is already an image available.
If you have changed some things in your code and want to rebuild the image you can run
docker-compose build and
docker-compose up -d (or
docker-compose up -d --build to do all in one).
Hi, how many minutes could this take? I am now running
docker-compose build and afterward
docker-compose up -d.
I mean it should not take an hour, right?
I assume I do not have any issue in my .yml file, but how could I further debug this.
Currently docker desktop on my mac shows that docker can use
3,5 GB of memory
Disk Size of 80GB
I agree that 60 minutes is much time to build an image. But depending on the workload (I don’t know your application) it can take some time.
Dockerfile is not working as expected I try to reproduce the steps “by hand”. That means (in this case) start an interactive terminal in a container based on
node:alpine and reproduce all the steps that are in the
Dockerfile. If there is a
COPY I use
docker copy ... run from another terminal, if there is a
RUN ... I run these commands in the container’s shell. Most of the times I was able to find the issue. Sometimes a mandatory library was missing and needed to be installed before, sometimes it was waiting for user’s input…
How long would you say the script should maximum take? In order to say “hey this takes to long”
I’m sorry - I don’t know.
It really depends on the tasks to be done.
Dockerfile's that need 5 seconds to be built and others need up to 27 minutes.
Try to recreate the steps from your
Dockerfile as mentioned to see which step takes which amount of time or if there are any errormessages or tasks waiting for user-input.