Docker-compose confuses building a frontend with a backend

Viewed 133

Using Docker-compose I want to build 3 containers: backend(node.js), frontend(react.js) and MySQL.

version: '3.8'

services:
  backend:
    container_name: syberiaquotes-restapi
    build: ./backend
    env_file:
      - .env
    command: "sh -c 'npm install && npm run start'"
    ports:
      - '3000:3000'
    volumes:
      - ./backend:/app
      - /app/node_modules
    depends_on:
      - db
  frontend:
    container_name: syberiaquotes-frontend
    build: ./frontend
    ports:
      - '5000:5000'
    volumes:
      - ./frontend/src:/app/src
    stdin_open: true
    tty: true
    depends_on: 
      - backend
  db:
    image: mysql:latest
    container_name: syberiaquotes-sql
    env_file:
      - .env
    environment:
      - MYSQL_DATABASE=${SQL_DB}
      - MYSQL_USER=${SQL_USER}
      - MYSQL_ROOT_PASSWORD=${SQL_PASSWORD}
      - MYSQL_PASSWORD=${SQL_PASSWORD}
    volumes:
      - data:/var/lib/mysql
    restart: unless-stopped
    ports:
      - '3306:3306'

volumes:
  data:

My files structure:

enter image description here

Everything worked fine until I've added a new 'frontend' container!

It seems that docker is treating my frontend container as second backend because it's trying to launch nodemon, and it's not even included in frontend dependencies!:

enter image description here

Obviously I have two Dockerfiles for each service, they are almost the same files. Backend:

enter image description here

Frontend:

enter image description here

Do You have any ideas where the problem should be?

1 Answers

RESOLVED! I had to delete all images and volumes:

$ docker rm $(docker ps -a -q) -f
$ echo y | docker system prune --all
$ echo y | docker volume prune

and run it again:

$ docker-compose up
Related