JunsuLime / spring-cloud-native-explorer

Spring cloud explorer
1 stars 0 forks source link

로컬환경에서 Docker 를 통해 서버를 실행하자. #16

Closed JunsuLime closed 2 years ago

JunsuLime commented 3 years ago

https://docs.docker.com/engine/reference/builder/ Docker reference 를 보면서 기본을 익혀보자.

JunsuLime commented 2 years ago

그렇다면 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

JunsuLime commented 2 years ago

docker image/container

container 의 생명주기

  1. create
  2. start
  3. (attach)
  4. stop
  5. rm

위와 같이 컨테이너의 생명주기가 관리된다.

Dockerfile 로 도커 이미지를 관리하자.

Dockerfile 을 통해 어플리케이션의 빌드 및 배포를 자동화 할 수 있다.

https://docs.docker.com/engine/reference/builder/#understand-how-cmd-and-entrypoint-interact

JunsuLime commented 2 years ago

이번 작업은 로컬 환경에서 Docker 를 통해 한번에 실행환경을 올리는 것 까지 수행하자. OCI 를 만들어 이미지 배포 및 해당 이미지를 통한 CD 는 #26 때 같이 마저 보자!

JunsuLime commented 2 years ago

이 이슈를 통해 해결을 할 내용부터 정리해보자. 목적: 로컬환경에서 클라우드 어플리케이션들의 이미지 빌드 / 로컬 환경 동작을 container 를 통해 수행하자.

세가지를 수행함에 있어. 자동화가 필요한 부분은 sh 파일로 메꾸도록 하자.

JunsuLime commented 2 years ago

이를 수행하기 전에 현재 모듈 구조부터 변경하도록 하자.

===

위의 작업을 완료하였다.

===

목적: 로컬환경에서 원만한 테스트를 위하여

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 과 동일하다.