Develop43 [Docker] 자주 쓰는 Docker 명령어 모음 도커 이미지 내려 받기 docker image pull [이미지 이름] 컨테이너 이미지 빌드하기 빌드하기 위해 이미지의 이름, 패키징에 필요한 파일의 경로를 추가로 지정해야 한다. 경로는 대개 온점(.)으로 표현하는데, Dockerfile이 존재하는 '현재 작업 디렉터리'라는 뜻이다. docker image build [경로] 옵션 설명 --tag [이름] 이미지의 이름을 지정한다. 도커 컨테이너 실행 docker container run [이미지 이름] 옵션 설명 -d, --detach 컨테이너를 백그라운드에서 동작한다. --name 컨테이너에 이름을 붙인다. (붙이지 않으면 무작위 ID로 생성됨) -e, --env [변수명]=[설정값] 컨테이너의 환경변수를 부여할 수 있다. -it 컨테이너와 대화식으.. 2023. 4. 13. [Docker] 도커가 컨테이너를 실행하는 원리 도커 엔진 : 도커의 관리 기능을 맡는 컴포넌트이다. 로컬 이미지 캐시를 담당하므로 새로운 이미지가 필요하면 이미지를 내려받으며, 기존 이미지가 있다면 전에 내려받은 이미지를 사용한다. 호스트 운영체제와 함께 컨테이너와 가상 네트워크 등 도커 리소스를 만드는 일도 담당한다. 도커 엔진은 항시 동작하는 백그라운드 프로세스이다. 도커 엔진은 도커 API를 통해 맡은 기능을 수행한다. 도커API는 표준 HTTP 기반 REST API이다. 도커 엔진의 설정을 수정하면 이 API를 네트워크를 경유해 외부 컴퓨터로부터 호출할 수 없도록 차단하거나 허용할 수 있다. 도커 명령행 인터페이스(도커 CLI)는 도커 API의 클라이언트다. 우리가 docker 명령을 사용할 때 실제로 도커 API를 호출하는 것이 바로 도커 .. 2023. 4. 12. [Java] String to Json 파싱하기 | Jackson ObjectMapper 온갖 JSON 파싱 방법 찾아서 적용하니까 코드가 더럽거나 실패했다. 그나마 가장 깔끔한 방법을 찾아서 공유한다!!!! 파싱 유목민 여기서 정착하다... 공식 문서 : https://www.baeldung.com/jackson-deserialize-json-unknown-properties import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; //.. 2023. 4. 2. [Spring Reactive] Spring Boot에서 R Socket 사용하기 TCP를 기반으로 하는 R소켓을 이용해서 서로 다른 시스템을 리액티브 하게 연결하는 방법을 알아보자. org.springframework.boot spring-boot-starter-rsocket 이 의존관계를 통해 다음 기능이 프로젝트에 추가된다. R소켓: 자바로 구현된 R소켓 프로토콜 리액터 네티: 네티는 리액티브 메시지 관리자 역할도 충분히 수행할 수 있다. 리액터로 감싸져서 더 강력한 서버로 만들어졌다. 스프링+잭슨: 메시지가 선택되고 직렬화되며 전송되고 역직렬화되고 파우팅되는 것은 프로토콜의 리액티브 속성만큼이나 중요하다. R소켓 서버 생성 @Service public class RSocketService { private final ItemRepository repository; // priv.. 2023. 3. 23. [Spring Reactive] RabbitMQ를 이용해 메시지 브로커 사용하기 AMQP 메시지 프로듀서 @RestController public class SpringAmqpItemController { private static final Logger log = LoggerFactory.getLogger(SpringAmqpItemController.class); private final AmqpTemplate template; public SpringAmqpItemController(AmqpTemplate template) { this.template = template; } @PostMapping("/items") Mono 2023. 3. 21. [Git] 원격 저장소에 잘못 올린 폴더, 파일 삭제하기 (.idea/ 폴더 삭제하기) 원격저장소와 로컬저장소에 있는 파일 및 폴더를 삭제한다. git rm [파일/폴더명] 원격저장소에 있는 파일 및 폴더를 삭제하는 명령어이다. git rm --cached [파일/폴더명] 뭔지 모르겠지만 'r' 옵션 없이는 안 된단다. -r 옵션을 추가하니 정상 수행되었다. commit 후 push를 해야 리모트에 반영된다!! 2023. 3. 20. R Socket이란 무엇일까? 리액티브 스트림의 근간을 다루는 개념은 바로 배압(backpressure)이다. 하지만 HTTP는 리액티브하지 않다. HTTP는 요청-응답 패러다임에 뿌리를 두고 있다. 과거의 개발자들은 HTTP를 사용하는 단순 요청-응답을 넘어서 터널로 서로 연결하는 방법을 고민해왔다. > 첫 번째, 롱 폴링 클라이언트가 서버에 요청을 보낸 후 즉각적인 대답을 기대하지 않고, 오래 기다리더라도 서버의 응답을 기다린다. 응답을 받으면 처리하고 바로 새로운 요청을 서버에 보내 기다리는 식으로 연결 지속성을 확보한다. 하지만 자원을 점유한다는 한계가 있다. > 두 번째, 웹소켓 웹소켓은 HTTP와는 다르게 양방향이다. 가볍고 양방향 비동기 통신을 지원하지만 배압 개념이 없으므로 리액티브하지 않다. RSocket 리액티브 프.. 2023. 3. 20. [Spring Boot] 스프링 부트의 메시징 솔루션 메시징 솔루션은 JMS(Java Messaging Service), 아파치 카프카, AMOP, 레디스, 젬파이어, 아파치 지오드 등 매우 다양하다. 각 솔루션들은 저마다 다른 관심사에 최적화돼 있다. 자바의 복잡도 감소를 위해 스프링 프레임워크의 설계 목표는 무엇보다도 애플리케이션을 만드는 방법을 단순화하는 것이다. 이를 달성하는 가장 강력한 수단 중 하나가 템플릿 패턴이다. 템플릿이란 특정 API의 모든 복잡성을 가장 단순한 연산으로 축약하는 것을 의미한다. 대표적으로 JdbcTemplate을 활용하면 몇 가지 연산만 사용해서 데이터 조회와 수정을 처리할 수있다. 강력한 템플릿 패턴은 MailSender, JndiTemplate, HibernateTemplate 등 여러 영역에서 사용되고, 다음과 같은.. 2023. 3. 16. 이전 1 2 3 4 5 6 다음