Docker: Uses an image, skipping (docker-compose)

node.jsMongodbDockerDocker Compose

node.js Problem Overview


I am currently trying out this tutorial for node express with mongodb https://medium.com/@sunnykay/docker-development-workflow-node-express-mongo-4bb3b1f7eb1e

the first part works fine where to build the docker-compose.yml it works totally fine building it locally so I tried to tag it and push into my dockerhub to learn and try more.

this is originally what's in the yml file followed by the tutorial

version: "2"
services:
  web:
    build: .
    volumes:
      - ./:/app
    ports:
      - "3000:3000"

this works like a charm when I use docker-compose build and docker-compose up

so I tried to push it to my dockerhub and I also tag it as node-test

I then changed the yml file into

version: "2"
services:
  web:
    image: "et4891/node-test"
    volumes:
      - ./:/app
    ports:
      - "3000:3000"

then I removed all images I have previously to make sure this also works...but when I run docker-compose build I see this message error: web uses an image, skipping and nothing happens.

I tried googling the error but nothing much I can find.

Can someone please give me a hand?

Thanks in advance

node.js Solutions


Solution 1 - node.js

I found out, I was being stupid.

I didn't need to run docker-compose build I can just directly run docker-compose up since then it'll pull the images down, the build is just to build locally

Solution 2 - node.js

in my case below command worked:

docker-compose up --force-recreate

I hope this helps!

Solution 3 - node.js

Clarification: This message (<service> uses an image, skipping) is NOT an error. It's informing the user that the service uses Image and it's therefore pre-built, So it's skipped by the build command.

In other words - You don't need build , you need to up the service.

Solution:

run sudo docker-compose up <your-service>

PS: In case you changed some configuration on your docker-compose use --force-recreate flag to apply the changes and creating it again.

sudo docker-compose up --force-recreate <your-service>

Solution 4 - node.js

My problem was that I wanted to upgrade the image so I tried to use:

  • docker build --no-cache
  • docker-compose up --force-recreate
  • docker-compose up --build

None of which rebuild the image.

What is missing ( from this post ) is:

docker-compose stop
docker-compose rm -f # remove old images
docker-compose pull  # download new images
docker-compose up -d

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionDoraView Question on Stackoverflow
Solution 1 - node.jsDoraView Answer on Stackoverflow
Solution 2 - node.jsSara VaseeiView Answer on Stackoverflow
Solution 3 - node.jsavivamgView Answer on Stackoverflow
Solution 4 - node.jsWayne WalkerView Answer on Stackoverflow