Darian Sampare님이 올려두신 글을 보고 설정하니 docker image 빌드 후 container 띄우는 것까지 잘 됐다.
- 현재 1개의 컨테이너를 사용하기에
docker-compose
까지는 필요 없다.docker-compose up
명령어를 실행하면 image를 매번 빌드한다 = image 파일이 무한정으로 쌓였다.docker build image
-docker-compose up
까지 자동으로 실행하는 shell script(쉘 스크립트 파일) 작성하면 편하다.
1번의 경우는 docker-compose 사용이 추후 확장성에 좋기 때문에 이 부분을 변경하지 않고,
2번, 3번을 수정하기로 했다.
// 원래의 docker-compose.yml
version: "3.7"
services:
front-demo:
build:
context: .
dockerfile: Dockerfile
target: base
volumes:
- ./src:/home/user/app/src
- ./nodemon.json:/home/user/app/nodemon.json
container_name: front-demo
expose:
- "4000"
ports:
- "4000:4000"
command: npm run dev
// 변경 후
version: "3.7"
services:
front-demo:
image: front-demo:latest //수정된 부분, `image: 이미지명:버전` 작성하면 docker가 알아서 해당 image를 찾아서 실행해준다.
volumes:
- ./src:/home/user/app/src
- ./nodemon.json:/home/user/app/nodemon.json
container_name: front-demo
expose:
- "4000"
ports:
- "4000:4000"
command: npm run dev
// build_n_run.sh
db_image_name="front-demo"
version="latest"
echo "## Automation docker build and run ##"
# new-build/re-build docker image
echo "=> Build new image..."
docker build -t ${db_image_name}:${version} .
# Run container
echo "=> Run container..."
docker-compose up
# remove old image like <none>
echo "=> Delete old image..."
docker rmi -f $(docker images -f "dangling=true" -q)
Dockerfiled이 있는 같은 디렉토리에 build_n_run.sh
파일을 생성한다.
그리고 터미널에 ./build_n_run.sh
입력해 파일을 실행하면 된다.
컨테이너가 종료되면 <none>
으로 표시되는 image 들을 모두 삭제되도록 했다.