https://github.com/ah9mon/AMOTH_project
기존에 했던 MSA 프로젝트이다.
백엔드를 (어설픈..)MSA로 설계했다.
그리고 배포를 하려는데 여러개로 나눈 서비스들을 하나의 EC2에 올려 실행하려 했을 때 어려움을 겪고 문제가 발생하고 나서 찾아보니 docker를 발견하게 되었고
각각의 서비스를 docker compose를 통해 image build 부터 컨테이너 실행까지 간편하게 할 수 있도록 했다.
여기까지 모두 local에 진행했다.
version: '3'
services:
back-auth:
build:
context: ./final-pjt-back/auth
dockerfile: dockerfile
ports:
- 8000:8000
networks:
- my-network
back-tmdb-api:
build:
context: ./final-pjt-back/tmdb_api
dockerfile: dockerfile
ports:
- 8001:8000
networks:
- my-network
back-community:
build:
context: ./final-pjt-back/community
dockerfile: dockerfile
ports:
- 8002:8000
networks:
- my-network
back-youtube-api:
build:
context: ./final-pjt-back/youtube-api
dockerfile: dockerfile
ports:
- 8003:8080
networks:
- my-network
back-translate:
build:
context: ./final-pjt-back/translate
dockerfile: dockerfile
ports:
- 8004:8000
networks:
- my-network
front:
build:
context: ./final-pjt-front
dockerfile: dockerfile
ports:
- 8080:8080
networks:
- my-network
depends_on:
- back-auth
- back-community
- back-tmdb-api
- back-youtube-api
- back-translate
networks:
my-network:
(docker-compose 파일의 내용)
위에 작성되어 있는 것처럼 image를 build하고 컨테이너를 실행하는 것을 로컬에 있는 dockerfile을 통해 진행했다.
앞으로 docker image를 docker hub에 올리고 docker compose를 실행했을 때 이미지를 docker hub에 있는 image를 가져와 컨테이너를 생성하고 실행하도록 할 것이다.
추후 이를 이용해 github action으로 docker hub에 image 업로드가 자동화 되도록 할 것이다.
계획은 이러하다.
이번 글은 2번에 대한 글이다.
기존의 docker compose 파일은
back-community:
build:
context: ./final-pjt-back/community
dockerfile: dockerfile
ports:
- 8002:8000
networks:
- my-network
위 처럼 로컬 디렉토리에 있는 docker file로 image를 build하도록 했다.
하지만 이제 지난번 포스트에 올린 docker hub에 있는 image를 통해하도록 docker compose.yml 파일을 수정할 것이다
방법은 매우 간단하다.
Docker hub와 별도로 연동하는 행위 없이
image: Username/ImageName:Tag
를 작성하는 것만으로 이미지를 사용할 수 있다.
(Tag를 작성하지 않으면 그냥 자동으로 'lastest' image를 가져온다)
image 섹션에서 사용자명/이미지이름:태그 형식으로 이미지를 지정하면 Docker는 해당 이미지를 Docker Hub에서 자동으로 가져온다.
아래처럼 수정해주자
version: '3'
services:
back-auth:
image: hangyeoleom/amoth_auth:1.0
ports:
- 8000:8000
networks:
- my-network
back-tmdb-api:
image: hangyeoleom/amoth_tmdb_api:1.0
ports:
- 8001:8000
networks:
- my-network
back-community:
image: hangyeoleom/amoth_community:1.0
ports:
- 8002:8000
networks:
- my-network
back-youtube-api:
image: hangyeoleom/amoth_youtube_api:1.0
ports:
- 8003:8080
networks:
- my-network
back-translate:
image: hangyeoleom/amoth_translate:1.0
ports:
- 8004:8000
networks:
- my-network
front:
image: hangyeoleom/amoth_frontend:1.0
ports:
- 8080:8080
networks:
- my-network
depends_on:
- back-auth
- back-community
- back-tmdb-api
- back-youtube-api
- back-translate
networks:
my-network:
정상적으로 됨을 확인할 수 있다.