본문 바로가기
개발/에러해결

docker-compose up 명령 시 ~service 'app' must be a mapping not a string.

by amkorousagi 2022. 10. 22.

에러 내용


ERROR: In file './docker-compose.yml', service 'front' must be a mapping not a string.

ERROR: In file './docker-compose.yml', service 'front' must be a mapping not a string.

docker-compose up 명령 시 위와 같은 메시지가 나오고 더 이상 앱을 빌드하지 않습니다.

 

에러 원인


docker-copose.yml의 문법 오류(syntax error)가 원인입니다.

보통 들여쓰기를 하지 않아 발생합니다. 하지만 저의 경우는 띄어쓰기를 실수하여 발생하였습니다.

 

해결 방법


docker compose specification을 참고하여 문법 오류를 수정하면 해결됩니다.

자주 실수하는 문법 오류는 다음과 같습니다.

  • 들여 쓰기(indentation) : 공백 두 개
  • 띄어쓰기(spacing) : ":" 뒤에 공백 하나

 

수정 전 코드 예시

# Use root/example as user/password credentials
version: '3.8'

services:
  front:
    image:node # 띄어쓰기가 없습니다.
    restart: always
    command : /bin/bash
    tty: true

  koj:
    image: node
    restart: always
    command : /bin/bash
    tty: true

  mongo:
    image: mongo
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: example

  back:
    image: node
    depends_on:
      - mongo
    ports:
      - "3000:3000"
    command : /bin/bash
    tty: true

 

수정 후 코드 예시

# Use root/example as user/password credentials
version: '3.8'

services:
  front:
    image: node # 띄어쓰기가 들어가도록 수정되었습니다.
    restart: always
    command : /bin/bash
    tty: true

  koj:
    image: node
    restart: always
    command : /bin/bash
    tty: true

  mongo:
    image: mongo
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: example

  back:
    image: node
    depends_on:
      - mongo
    ports:
      - "3000:3000"
    command : /bin/bash
    tty: true

 

아래는 문법 오류를 수정하여 에러가 해결되어 docker-compose up이 정상 작동하는 모습입니다.

docker-compose up success screenshot

참고 자료


 

 

Compose specification

 

docs.docker.com

 

 

 

Docker: service 'image' must be a mapping not a string

I'm install openvpn-status and npm install not work for me so I use docker instead. And when using docker-compose I got the error: docker-compose up docker-compose.yml ERROR: In file './docker-com...

serverfault.com

 

댓글