Closed JunsuLime closed 2 years ago
Docker
CI Tool (github action)
CD 는 일단 생략! 을 통해 지속적 통합 환경을 구성하자.
그렇다면 CI 란 무엇인가?
소프트웨어 공학에서, 지속적 통합(continuous integration, CI)은 지속적으로 품질 관리(Quality Control)를 적용하는 프로세스를 실행하는 것이다. - 작은 단위의 작업, 빈번한 적용. 지속적인 통합은 모든 개발을 완료한 뒤에 품질 관리를 적용하는 고전적인 방법을 대체하는 방법으로서 소프트웨어의 질적 향상과 소프트웨어를 배포하는데 걸리는 시간을 줄이는데 초점이 맞추어져 있다. 대표적인 CI 툴에는 젠킨스(Jenkins)가 있다.
https://ko.wikipedia.org/wiki/%EC%A7%80%EC%86%8D%EC%A0%81_%ED%86%B5%ED%95%A9
위와 같이 컨테이너의 생명주기가 관리된다.
Dockerfile 을 통해 어플리케이션의 빌드 및 배포를 자동화 할 수 있다.
https://docs.docker.com/engine/reference/builder/#understand-how-cmd-and-entrypoint-interact
이번 작업은 로컬 환경에서 Docker 를 통해 한번에 실행환경을 올리는 것 까지 수행하자. OCI 를 만들어 이미지 배포 및 해당 이미지를 통한 CD 는 #26 때 같이 마저 보자!
이 이슈를 통해 해결을 할 내용부터 정리해보자. 목적: 로컬환경에서 클라우드 어플리케이션들의 이미지 빌드 / 로컬 환경 동작을 container 를 통해 수행하자.
세가지를 수행함에 있어. 자동화가 필요한 부분은 sh 파일로 메꾸도록 하자.
이를 수행하기 전에 현재 모듈 구조부터 변경하도록 하자.
===
위의 작업을 완료하였다.
docker build -t cloud-explorer:0.0 ./
를 실행하여 이미지를 빌드하자.docker run -d -P --name cloud-explorer-runner cloud-explorer:0.0
명령을 통해 컨테이너를 실행시키자..dockerignore
를 통해 docker build 시 context 로부터 제거할 목록을 추릴 수 있다. (나의 예제는 build 파일을 가져오는 것이기때문에 src 를 제외하였다.)===
목적: 로컬환경에서 원만한 테스트를 위하여
shell 을 통해
나중에 gradle task 로 이를 재정의해보자. https://docs.gradle.org/current/userguide/more_about_tasks.html#sec:defining_tasks
https://docs.docker.com/compose/environment-variables/#using-the---env-file--option 이를 이용해 env 파일을 정의하고 실행하자 (env 파일은 gitignore 로 버전 컨트롤에 들어가지 않게 하자.) https://docs.docker.com/compose/env-file/
컨테이너 환경에서 docker network 구축에 대해서 알아보자. "시작하세요! 도커 쿠버네티스" 의 p.51 도커 네트워크를 읽어보자.
container 에서 다른 container 로 접근하기위해서는 DNS 를 입력해야한다. DNS 의 default 값은 container_name 과 동일하다.
https://docs.docker.com/engine/reference/builder/ Docker reference 를 보면서 기본을 익혀보자.