https://docs.github.com/en/enterprise-cloud@latest/actions/use-cases-and-examples/building-and-testing/building-and-testing-java-with-gradle도입 이유스프링부트로 협업하면서 PR을 사용하기로 했는데 develop 브랜치에 충돌만 안나면 머지되도록 되어 있었다.github action을 배우고, 테스트 워크플로를 작성할 수 있다는 것을 알게 되었고, 이 기능을 활용해서 다른 사람 코드가 컴파일 오류 없이 잘 돌아가는지 알아서 테스트 해주면 정말 편하겠다는 생각이 들어서 사용해보기로 했다.Build and test (Java & Gradle)공식 문서에 스프링부트로 애플리케이션을 만드는 프로젝트에서 ..
분류 전체보기
https://git-scm.com/docs/git-add파일에 여러 개 기능이 구현되어 있는 경우하나의 파일에 여러 개 기능이 구현된 경우, 어떻게 기능 단위로 add 할 수 있는가?git add -p 위 명령어로 파일 내에서 변경된 내용을 쪼개서 추가할 수 있다.README.md에서 A, B, C가 추가된걸 확인할 수 있다. --patch, -p이 옵션은 변경된 파일에서 변경된 부분을 라인별로 선택해서 `add` 할 수 있는 옵션이다.add 할지 말지는 콘솔에서 대화형으로 선택할 수 있는데, 아래와 같은 타입이 있다.y - stage this hunk n - do not stage this hunk q - quit; do not stage this hunk or any of the remaining ..
HttpSession and RESTful APIs스프링 공식 문서 Spring Session은 Session을 헤더로 주고 받으면서 RESTful API와 동작할 수 있다. Tomcat의 경우 SessionID를 JSESSIONID라는 키의 쿠키를 생성해서 set-cookie 헤더에 담아서 전달 Requset시 Header에 SessionId가 포함되어 절달된다면 (Cookie 헤더에 SeesionId가 전달될 것) 서블릿 컨테이너는 세션을 발급하지 않고 해당 SessionId에 해당하는 세션을 전달하게 되고, SessionId가 포함되지 않는다면 HttpSession을 요구하는 모든 요청에 대해 새로운 Session을 발급.private String createSession(HttpServletReq..
Spring SessionSpring Session 공식 문서Spring Sesison은 유저 세션 정보 관리를 위한 API와 구현체를 제공한다. Spring session 은 세션 클러스터링을 유지하도록 한다.세션 클러스터링이란?클러스터는 군집이나 무리를 뜻함두 대 이상의 WAS가 동시에 한가지 업무를 수행하도록 만드는 기술세션 클러스터링은 WAS가 두 대 이상 설치되어 있을 경우 동일한 세션으로 세션 관리하는 것을 의미동일한 세션으로 여러 WAS 서버에서 사용할 수 있다는 말 예를 들어서 설명하자면,요청이 오면 L4 스위치가 해당 사용자가 접속했던 WAS로 유도해서 사용하던 세션을 그대로 사용할 수 있도록하지만 스레드 풀이 고갈되어서 다른 WAS를 사용하게 된다면 이때 세션 불일치 문제가 발생할 수 ..
상황Dockerfile의 base image가 다운이 안되는 상황에서 나온 에러이전에는 이런 에러가 뜨면 그냥 수동으로 `docker pull ubuntu:latest` 이미지를 pull 해서 해결했었다.근데 생각해보면 ubuntu:lastest는 docker hub에 있는 퍼블릭 이미지인데 base 이미지로 사용하면 에러가 난다는게 이상했다. 공식 문서에서도 docker Hub에 등록된 퍼블릭 이미지를 로컬 이미지에 없어도 base 이미지로 사용할 수 있다고 하는데 왜 안되는가.. 해서 구글링을 해봤다. 원인`~/.docker/config.json` 파일이 문제였다.credsStore -> credStore로 변경해주니 잘 해결되었다.참고자료https://stackoverflow.com/question..
Multi-Stage buildMulti-Stage 포스팅Docker 이미지의 목적은 실행이지, 빌드에 있지 않다. 컴파일이나 빌드 관련 명령어는 제외하자과거에는 도커 이미지 생성 시 프로그램 빌드 후 도커 이미지 생성현재에는 이미 프로그램 빌드가 마쳐진 결과물만 가지고 (COPY) 도커 이미지 생성혹시라도 도커 이미지 내에서 프로그램 빌드(컴파일)을 한다면 멀티 스테이지 도입이 시급Java의 경우 `/gradlew clean build`, JS인 경우 `npm install`Java인 경우 `build` 디렉토리에 쌓인 `.class` 바이트코드 사이즈가 너무 크고 (.JAR 파일을 COPY해서 사용하는 이유)JS의 경우 `node_nodule` 사이즈가 너무 크다.도커 이미지의 사이즈는 크면 클수록 ..
https://docs.docker.com/build/building/multi-stage/ Multi-stageLearn about multi-stage builds and how you can use them to improve your builds and get smaller imagesdocs.docker.com 공식 문서를 번역하면서 공부한 것이라 오역이 있을 수 있습니다.Use multi-stage buildsMulti-stage build는 이미지 빌드와 최종 결과물 사이를 깔끔하게 분리하여 최종 이미지 사이즈를 줄어준다. Dockerfile 명령어를 여러 단계로 나누어 Dockerfile의 결과물이 애플리케이션을 실행하는 데 필요한 파일만 포함하도록 하자multi-stage는 빌드 단계를 ..
Build contextLearn how to use the build context to access files from your Dockerfiledocs.docker.com docker buildx builddocker build 위 두 명령어를 수행하면 Dockerfile과 context로부터 Docker 이미지가 만들어진다. Build Context가 뭔데?`docker build` 명령어를 실행했을 때 접근 가능한 파일의 집합이다. `build` 명령에서 특정 위치를 인자로 넘겨서 build에 사용할 context를 지정할 수 있다.아래 명령어 같은 경우 `.` 현재 디렉토리를 기준으로 context를 생성해서 사용하겠다는 뜻 -> 현재 작업 디렉토리를 build context라고 한다. D..
Dockerfile overviewLearn about Dockerfiles and how to use them with Docker Images to build and package your softwaredocs.docker.com Docker는 Dockerfile에서 명령어를 읽어 이미지를 빌드한다. Dockerfile은 소스코드를 빌드하기 위한 명령어가들어 있는 텍스트 파일이다. Dockerfile에 사용되는 명령어`FROM ` : 이미지의 기준이 되는 것을 정의`RUN ` : 현재 이미지 위의 새 레이어에서 모든 명령을 실행하고 결과를 커밋.`WORKDIR `: `RUN`, `CMD`, `ENTRYPOINT`, `COPY`, `ADD` 명령어에 대한 작업 디렉터리를 설정'`COPY `: ``..