2021/01

도커공부를 할겸, 로컬환경에서 프론트/백엔드를 분리하여 이미지를 만들었다. 목표는 프론트(nginx, vue)에서 백엔드(springboot)로의 호출을 가능하게 하는 것이다. 일단, 컨테이너들이 같은 네트워크안에 속하게 하기위해 docker-compose.yml을 작성하였다. version: "3.8" services: front: image: corn_front ports: - "9090:80" back: image: corn_back ports: - "8080:8080" 그 후 컨테이너를 실행시켰더니, front에서 back으로 호출이 안되는 현상을 발견하였다. 도린이라서 원인을 찾는데 살짝 삽질을 함 일단 원인은 nginx 설정 문제였다. 보통 배포를 할때 하나의 머신에서 fornt(nginx, ..
DockerCompose 네트워크 디폴트 네트워크 기본적으로 Docker Compose는 하나의 디폴트 네트워크에 모든 컨테이너를 연결한다. 디폴트 네트워크의 이름은 docker-compose.yml가 위치한 디렉토리 이름 뒤에 _default가 붙는다. common/docker-compose.yml 에서 docker-compose up 을 실행하였다면, 디폴트 네트워크의 이름은 common_default 이다. sunghyunui-MacBook-Pro:common sunghyun$ docker network ls NETWORK ID NAME DRIVER SCOPE 7d10570b388c 03container_exam_default bridge local 5cdd4f6a9893 bridge bridge ..
도커 컨테이너 다루기 도커 컨테이너는 이미지를 바탕으로 만듭니다. 따라서 우리는 도커 이미지, 도커 컨테이너를 다루는 법에 익숙해져야 합니다. 자 그럼 도커 컨테이너에 대해 알아봅시다. 도커 컨테이너 생애주기 실행 중, 정지, 파기의 3가지 상태를 갖습니다. 실행 중 상태 docker container run 명령의 인자로 지정된 도커 이미지를 기반으로 컨테이너가 생성되면 이 이미지를 생성했던 Dockerfile에 포함된 CMD 및 ENTRYPOINT 인스트럭션에 정의된 애플리케이션이 실행됩니다. 이 애플리케이션이 실행 중인 상태가 컨테이너의 실행 중 상태가 됩니다.(실행이 끝나면 정지 상태가 됨) 정지 상태 실행 중 상태에 있는 컨테이너를 사용자가 명시적으로 정지하거나 컨테이너에서 실행된 애플리케이션이..
도커 이미지 다루기 도커 사용법은 크게 이미지를 대상으로 하는 것과 컨테이너를 대상으로 하는 것으로 나뉩니다. 따라서 우리는 도커 이미지를 다루는 법과 도커 컨테이너를 다루는 법에 익숙해져야 합니다. 그 전에 도커 이미지가 구체적으로 무엇인지 알아보겠습니다. 한 마디로 말하면 도커 이미지는 도커 컨테이너를 만들기 위한 템플릿 입니다. 도커 이미지는 우분투 같은 운영 체제로 구성된 파일 시스템은 물론, 컨테이너 위에서 실행하기 위한 애플리케이션이나 그 의존 라이브러리, 도구에 어떤 프로세스를 실행할지 등의 실행 환경의 설정 정보까지 포함하는 아카이브 docker image build - 이미지 빌드 docker image build는 Dockerfile에 기술된 구성을 따라 도커 이미지를 생성하는 명령입니..
들어가며 몇 달전 MSA가 핫한 기술이라고 하여, 무작정 관련 서적을 사서 읽던 중.. 외계어 같은 도커 컴포즈? 컨테이너? 만나 한계에 부딪혀서 도커 공부를 시작하게되었습니다ㅎㅎ 아직 도린이지만, 공부한 내용을 공유하고자 합니다~ => 도커 컴포즈, 스웜, 쿠버네티스 같은 고급? 내용은 아직 정리를 못하였고 기초적인 내용(이미지, 컨테이너 다루기)이 포함되어있습니다. 컨테이너로 애플리케이션 실행하기 우선 로컬 PC에 도커가 설치되었다고 가정하고 시작하겠습니다. 도커는 https://hub.docker.com/search?q=&type=edition&offering=community 에서 받을 수 있습니다! 컨테이너로 애플리케이션을 실행하는 방법을 배우기 전에 도커 이미지와 도커 컨테이너의 관계를 먼저 ..
Srping Validation Spring에서는 AOP와 같은 방식으로 더 편리하게 유효성검사를 할 수 있다. Validated 스프링에서는 유효성검사에 진입하게되는 지점에 @Validated라는 애노테이션을 사용하는 방법을 제공한다. 필요한 클래스나 메소드에 @Validated 어노테이션을 추가해서 사용한다. @Service @Validated public class UserService{ public User add(@NotNull User user){ } } 만약 제약조건에 위반되면 ConstraintViolationException이 발생하게 된다. (※ @ControllerExceptionHanlder를 사용하여 요긴하게 써먹을 수 있음. ConstrainoViolationException에서..
Vlidation은 데이터를 검증할 때 사용한다. 데이터 검증으 여러 계층에 걸쳐서 이루어지게 되는데, 이 과정으로 인해 문제점이 발생할 수 있다. 코드의 중복 검증로직 불일치로 인한 오류 이 문제를 해결하기 위해서 Java에서는 2009년부터 Bean Validation이라는 데이터 유효성 검사 프레임워크를 제공하고 있다. Bean Validation은 다양한 제약을 어노테이션을 사용하여 데이터를 검증할 수 있게 하였다. Bean Validation 1.0 (JSR-303) Bean Validation 1.1 (JSR-349) Bean Validation 2.0 (JSR-380) Hibernate Validator Hibernate Validator는 Bean Validation 명세에 대한 구현체이다..
링버퍼를 사용하면 디큐(deque)시 발생하는 요소 이동 문제를 해결할 수 있다. 2021/01/05 - [분류 전체보기] - 자바(JAVA)로 큐(Queue) 구현하기 public class IntQueue { private int max; private int num; private int[] que; private int front; private int rear; // 예외 : 큐가 비어 있음 class EmptyIntQueueException extends RuntimeException{ } // 예외 : 큐가 가득 참 class OverflowIntQueueException extends RuntimeException{ } public IntQueue(int capacity){ num = fr..
public class IntAryQueue { private int max; // 큐 용량 private int num; // 현재 데이터 수 private int[] que; // 큐 본체 private int front; private int rear; // 예외 : 큐가 비어 있음 class EmptyIntQueueException extends RuntimeException{ } // 예외 : 큐가 가득 참 class OverflowIntQueueException extends RuntimeException{ } public IntAryQueue(int capacity){ num = front = rear = 0; max = capacity; try { que = new int[capacity]..
public class IntStack { private int max; // 스택 용량 private int ptr; // 스택 포인터 private int[] stk; // 스택 본체 // 예외 : 스택이 비어 있음 class EmptyIntStackException extends RuntimeException{ } // 예외 : 스택이 가득 class OverflowIntStackException extends RuntimeException{ } // 생성자 public IntStack(int capacity){ ptr = 0; max = capacity; try { stk = new int[max]; }catch(OutOfMemoryError e){ max = 0; } } public int pu..
깡냉쓰
'2021/01 글 목록 (2 Page)