Programming 73

[Docker] 도커 명령어 - 도커 허브에 로그인/로그아웃, 도커 이미지 업로드

1. 도커 허브에 로그인 / 로그아웃 Docker registry에 로그인 할 때 docker login 명령을 사용한다. 만약 서버의 지정이 없다면 기본적으로 daemon에 의해 정의된 것을 사용한다. $ docker login [OPTIONS] [SERVER] $ docker logout ※ 로그인하기 전에 Docker Hub의 계정을 생성해야 한다. Login Succeeded 가 나오면 로그인에 성공한 것이다. 해당 로그인 정보는 cat /root/.docker/config.json 에 저장되어 있다. $ docker logout 명령을 해주면 해당 정보는 제거된다. 2. 도커 이미지 업로드 기본적으로 docker 허브에 로그인 되어있어야 업로드 할 수 있다. 해당 image명은 '계정명/이미지명..

Programming/Docker 2022.03.20

[Docker] 도커 명령어 - 도커 이미지 자세한 내용 확인, 이미지 태그 설정, 이미지 삭제

1. 도커 이미지 자세한 내용 확인 docker object에 대한 low-level 정보를 확인할 때 사용한다. $ docker inspect [OPTIONS] NAME|ID [NAME|ID...] $ docker image inspect [OPTIONS] IMAGE [IMAGE...] 예시) nginx 도커 이미지에 대한 스팩이 JSON으로 출력된다. 명령 옵션 -f, --format string Go template 사용하여 출력 형식을 지정(일부 출력을 위해)한다. $ docker image inspect nginx $ docker image inspect --format="{{ .Os }}" nginx 2. 이미지 태그 설정 Docker Hub에 작성한 이미지를 등록하기 위해서는 다음과 같은 규..

Programming/Docker 2022.03.20

[Docker] 도커 명령어 - 이미지 검색, 이미지 다운로드, 이미지 목록 확인

도커가 구동되어 있는 상태에서 도커의 이미지 검색, 다운로드, 이미지 목록 확인을 할 수 있다. 1. 이미지 검색 $ docker search {image명} 예시 ) nginx STARS : star의 갯수를 나타냄. (git의 star 같은 개념) OFFICIAL : 공인된 프로그램 AUTOMATED : Dockfile을 바탕으로 자동 생성된 이미지인지 아닌지 $ docker search --filter stars=50 nginx --filter 조건으로 stars의 갯수가 50개 이상에 해당하는 파일만 검색할 수 있다. 2. 이미지 다운로드 $ docker image pull [OPTIONS] NAME[:TAG|@DIGEST] 예시) nginx :TAG 를 생략할 시 latest버전(최신버전)을 다..

Programming/Docker 2022.03.20

[Docker] CentOS 환경에서 Docker 설치

환경 - CentOS8, VMwarePro 16 1. Red Hat 환경(대표적으로 CentOS)에서 Docker를 설치해줄 때 충돌 패키지를 먼저 삭제해 주어야한다. $ yum remove runc 화면) ------------------------- 삭제 중: runc 종속 패키지 제거: buildah cockpit-podman podman 사용하지 않는 종속 패키지 제거: conmon container-selinux containers-common criu fuse-overlayfs fuse3 fuse3-libs libnet libslirp podman-catatonit slirp4netns ------------------------- y 키를 눌러 삭제를 진행한다. 2. docker-ce 설치 ..

Programming/Docker 2022.03.20

[SpringBoot] @Controller - jsp 페이지 호출 시 에러 (Exiting from "FORWARD" dispatch, status 404) 해결

에러 2022-03-09 21:34:59.981 DEBUG 21940 --- [nio-7068-exec-1] o.s.w.s.v.ContentNegotiatingViewResolver : Selected 'text/html' given [text/html, application/xhtml+xml, image/avif, image/webp, image/apng, application/xml;q=0.9, application/signed-exchange;v=b3;q=0.9, */*;q=0.8] 2022-03-09 21:34:59.981 DEBUG 21940 --- [nio-7068-exec-1] o.s.w.servlet.view.InternalResourceView : View name '/home', mod..

Programming/Spring 2022.03.09

[Spring] jackson-dataformat-xml (@JsonFilter) - Response 데이터 제어

필요성 : Controller Mapping 마다 각각 필요로하는 데이터를 지정해 줄 수 있다. 특정 필드에 @JsonIgnore 를 사용할 경우, 해당 클래스를 사용하는 모든 데이터가 필터링되므로 개별적인 제어를 해주기 위해서는 @JsonFilter를 사용해야 한다. 이전 글 - https://matseventwelve.tistory.com/69 [Spring] jackson-dataformat-xml (@JsonIgnore, @JsonIgnoreProperties) - Response 데이터 제어 필요성 : Rest 데이터를 리턴해줄 때 민감한 정보를 @JsonIgnore 을 통해 제어할 수 있다. 1. @JsonIgnore 테스트 클래스 일반적인 데이터 클래스를 Response 받으면 아래 사진처럼..

Programming/Spring 2022.02.17

[Spring] jackson-dataformat-xml (@JsonIgnore, @JsonIgnoreProperties) - Response 데이터 제어

필요성 : Rest 데이터를 리턴해줄 때 민감한 정보를 @JsonIgnore 을 통해 제어할 수 있다. 1. @JsonIgnore 테스트 클래스 일반적인 데이터 클래스를 Response 받으면 아래 사진처럼 password와 ssn 정보가 그대로 출력된다. 민감한 정보에 해당하는 password와 ssn에 @JsonIgnore 어노테이션을 입력해준 후 다시 테스트하면 어노테이션 처리된 필드는 출력되지 않는다. 2. @JsonIgnoreProperties(value = { "필드명1", ... , "필드명N"}) @JsonIgnore 와 마찬가지로 필드의 리턴 여부를 제어할 수 있다. +) 해당 클래스를 상속받았을 경우, 마찬가지로 Ignore 처리된 필드는 출력되지 않는다!

Programming/Spring 2022.02.17

[Spring] jackson-dataformat-xml (DataType = XML 리턴 )

필요성 : Spring Boot Restful 서비스를 만들 때, XML 데이터 타입으로 데이터를 반환할 때 사용되는 dependency pom.xml 에 해당 dependency를 저장하고, 서버 재구동. com.fasterxml.jackson.dataformat jackson-dataformat-xml 2.10.2 URL 헤더에 Key : Accept Value : application/xml 을 입력하면 반환 값을 xml 타입으로 받을 수 있다. (json은 application/json, default)

Programming/Spring 2022.02.17

[Java] JDBC 대용량 데이터 처리 - addBatch, executeBatch, PreparedStatement

필요성 : 10만건이 넘는 데이터를 DB에 insert할 이슈가 있었다. 기존의 Mybatis를 이용해서 처리하는 과정에서 foreach 생성만 해도 시간 소요가 상당함을 발견했다. Mapper/DAO 처리 대신 JDBC connection을 직접 코딩해주어야 하지만 속도는 훨씬 빠르다. public void insertList(List list, int processAmount) throws Exception { Connection con = null; PreparedStatement pstmt = null; StringBuffer sb = new StringBuffer("INSERT INTO T_TABLE( ") .append("M_A") .append("M_B") .append("M_C") .app..

Programming/Java 2022.02.16