에러 내용
docker-compose up
exited with code 0
docker-compose 시 exited with code 0 가 나옵니다.
always: true로 설정했을 시 exited with code 0 가 무한히 나옵니다.
에러 원인
docker container는 하나의 명령어를 실행합니다.
명령어의 수행이 끝나면 종료합니다.(정상적인 종료 == exit code 0)
따라서, 명령어를 주지 않거나 단발적으로 실행되고 끝나는 명령어( ls 같은)를 주면 곧바로 컨테이너가 종료됩니다.
정상적인 종료임으로 code 0를 반환하며 종료됩니다.
해결 방법
끝나지 않는 명령을 시키거나 명령이 끝나도 종료되지 않도록 설정합니다.
1. "command: node index.js"등 종료되지 않는 명령어를 수행하도록 합니다.
# Use root/example as user/password credentials
version: '3.8'
services:
back:
image: node
ports:
- "3000:3000"
command: node /app/index.js # 종료되지 않는 명령어
volumes:
- ./koj/:/app/
또는
1. "stdin_open: true"나 "tty: true"로 명령어 수행이 종료되더라도 컨테이너가 종료되지 않도록 합니다.
# Use root/example as user/password credentials
version: '3.8'
services:
front:
image: node
container_name: front
restart: always
volumes:
- ./front/:/app/
ports:
- "3001:3001"
tty: true # 둘 중 하나만 써도 종료되지 않습니다.
stdin_open: true # 둘 중 하나만 써도 종료되지 않습니다.
+
docker-compose의 tty: true는 docker run의 -t 옵션과 같습니다.
docker-compose의 stdin_open: true는 docker run의 -i 옵션과 같습니다.
-t : Allocate a pseudo-tty
-i : Keep STDIN open even if not attached
-t : 유사 터미널을 할당합니다.
-i : 백그라운드에서 돌아가더라도 표준 입력을 열도록 유지합니다.
참고 자료
'개발 > 에러해결' 카테고리의 다른 글
SyntaxError: Cannot use import statement outside a module (0) | 2022.10.22 |
---|---|
export 'Switch' (imported as 'Switch') was not found in 'react-router-dom' (0) | 2022.10.22 |
Error: Cannot find module 'semver' (0) | 2022.10.22 |
n stable 후 node old version (0) | 2022.10.22 |
docker-compose up 명령 시 ~service 'app' must be a mapping not a string. (0) | 2022.10.22 |
댓글