728x90
반응형

Tech 90

[Docker, Jenkins] 도커 젠킨스 빌드, 실행하면서 에러 발생 시 해결방법 모음 (권한 오류, COPY 오류, Container는 정상이나 접속 안될 때 등)

AWS ec2 인스턴스 위에 Jenkins, Docker를 활용해 Springboot CI/CD 자동화를 진행하던 도중, Docker와 Jenkins 를 처음 사용할때 겪었던 많은 오류와 오랜 시간이 걸려 찾아낸 해결방법을 남겨두고자 한다. 스택은 아래와 같다. Java 11 Springboot Docker Jenkins AWS ec2 1. (젠킨스 빌드 시) 도커 Permission denied 에러 docker logs로 Permission 문제인지 확인해본다. 이때 디렉토리의 권한을 부여해 주어야 한다. sudo chown 1000 2. (젠킨스 빌드 시) 도커 COPY 에러(ARG) 젠킨스로 ec2 인스턴스 위에 Springboot를 배포하려 했을때, 경로를 못찾거나 아래 오류가 나타날 때가 있다..

Tech/Docker 2022.10.14

[BOJ] 백준 14500 테트로미노 c++ (구현, 백트래킹)

문제 출처 : https://www.acmicpc.net/problem/14500 14500번: 테트로미노 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변 www.acmicpc.net 풀이 백트래킹을 사용하여 쉽게 해결할 수 있다. dfs로 가장 간단하게 탐색을 진행할 수 있다. 그러나 dfs로 4칸을 모두 찾는 단순한 문제인줄 알았는데, ㅓ ㅜ ㅓ ㅗ와 같은 케이스가 있다. 이 경우는 따로 처리하여 해결하였다. 코드 #include #include using namespace std; int N, M; int dx[4] = {1, -1, 0 , 0}; int d..

Tech/Algorithm 2022.07.21

[DB 구축] AWS RDS 구축하기 (MySQL)

1. DB 생성 (1) RDS 생성 AWS 접속 후 RDS를 검색 - 데이터베이스 생성 클릭! (2) DB 엔진 사양, 정보 선택 필자는 MySQL로 진행하였다. (3) 템플릿 및 DB 설정 필자는 프리티어로 진행했다. 마스터 계정을 생성해주자! 프리티어의 경우 버스터블 클래스로 선택된다. (4) 연결 설정 외부 접속을 위해서 퍼블릭 엑세스를 예로 해주었다. 필자의 경우, 보안 그룹을 새로 생성해주었다. (5) DB 이름 지정 필자의 경우, 암호 인증으로 하였으며 초기 데이터베이스 이름은 꼭 지정해주자! 이제 생성 버튼을 누르고 기다려주자! 2. 기타 설정 (1) AWS EC2와 연결 먼저 ec2에서 접속하기 위해 포트를 열어주어야 한다. 보안 그룹 - 인바운드 규칙으로 접속하자. 인바운드 규칙을 아래와..

Tech/Server 2022.04.08

[리눅스 환경 Server 개발] Let's Encrypt로 HTTP HTTPS로 변환하기

오랜만에 블로그를 써본다!! 그동안 과제와 설계에 죽어나는 3학년 인생을 살고있었다.. 현재 구축해둔 서버 환경은 다음과 같다. OS: Ubuntu 18.04 (LTS) -> AWS EC2로 클라우드 연결 웹서버 : Nginx BL : PHP DBMS : MySQL 도메인 구축 및 DNS 레코드 설정 완료(가비아로 등록) Let's Encrypt란? - 무료의 TLS/SSL 인증서를 쉽게 가져오고 설치할 수 있는 방법을 제공하는 CA(인증 기관) - 웹 서버에서 암호화된 HTTPS를 사용할 수 있음 (1) Certbot 설치 우선 Certbot를 위한 repository를 추가해보자. $ sudo apt update $ sudo apt upgrade $ sudo add-apt-repository ppa:..

Tech/Server 2022.03.31

[스프링 핵심 원리] 웹 스코프

지금까지 싱글톤과 프로토타입 스코프에 대해 알아보았는데, 웹 스코프에 대해 알아보자. 싱글톤 : 스프링 컨테이너의 시작과 끝까지 프로토타입 : 생성과 의존관계 주입, 초기화까지만 웹 스코프는 웹 환경에서만 동작한다. 프로토타입과 다르게 스프링이 해당 스코프의 종료시점까지 관리한다. (종료 메서드가 호출됨) 웹 스코프의 종류에 대해 알아보자. request : HTTP 요청 하나가 들어오고 나갈 때까지 유지, 각각의 HTTP 요청마다 별도의 빈 인스턴스가 생성, 관리 session : HTTP Session과 동일한 생명주기 가짐 application : 서블릿 컨텍스트(ServletContext)와 동일한 생명주기를 가지는 스코프 websocket : 웹 소켓과 동일한 생명주기를 가지는 스코프

Tech/Spring 2022.02.06

[스프링 핵심 원리] 프로토타입 스코프

싱글톤 스코프의 빈을 조회하면 스프링 컨테이너는 항상 같은 인스턴스의 스프링 빈을 반환한다. 반면 프로토타입 스코프를 스프링 컨테이너에 조회하면 스프링 컨테이너는 항상 새로운 인스턴스를 생성해서 반환한다. 스프링 컨테이너는 프로토타입 빈을 생성하고, 의존관계 주입, 초기화까지만 처리한다. 클라이언트에 빈을 반환하고, 이후 스프링 컨테이너는 프로토타입 빈을 관리하지 않는다. 따라서 프로토타입 빈을 관리할 책임은 빈을 받은 클라이언트에 있다. 그래서 @PreDestory 같은 종료 메서드가 호출되지 않는다. 프로토타입 스코프 빈을 조회하는 prototypeBeanFind()를 실행하면 아래와 같은 결과가 나온다. @Scope("prototype") find prototypeBean1 PrototypeBean..

Tech/Spring 2022.02.02

[BOJ] 백준 4963 섬의 개수 c++ (bfs)

문제 출처 : https://www.acmicpc.net/problem/4963 4963번: 섬의 개수 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 지도의 너비 w와 높이 h가 주어진다. w와 h는 50보다 작거나 같은 양의 정수이다. 둘째 줄부터 h개 줄에는 지도 www.acmicpc.net 풀이 dfs, bfs 모두 사용 가능하며 bfs로 해결하였다. 코드 #include #include #include using namespace std; int w, h; int arr[50 + 1][50 + 1]; bool check[50 + 1][50 + 1]; queue q; int dx[8] = {-1, 1, 0, 0, 1, 1, -1, -1}; int dy[8] = {..

Tech/Algorithm 2022.01.24

[스프링 핵심 원리] 자동, 수동의 올바른 실무 운영 기준

- 편리한 자동 기능을 기본으로 사용하자! 스프링이 나온 후 점점 자동을 선호하는 추세다. @Component 뿐만 아니라 @Controller, @Service, @Repository 처럼 계층에 맞춰 일반적인 애플리케이션 로직을 자동으로 스캔할 수 있도록 지원한다. (최근 스프링 부트는 컴포넌트 스캔을 기본으로 사용하고, 빈들도 조건에 맞으면 자동으로 등록하도록 설계되어있음) 자동 빈 등록을 사용해도 OCP, DIP를 지킬 수 있으므로 사용하는게 좋다. - 그럼 수동 빈 등록은 언제 사용하지? 애플리케이션은 크게 업무 로직과 기술 지원 로직으로 나눌 수 있다. 업무 로직 빈 : 웹을 지원하는 컨트롤러, 핵심 비즈니스 로직이 있는 서비스, 데이터 계층의 로직을 처리하는 리포지토리 등 / 보통 비즈니스 ..

Tech/Spring 2022.01.22

[스프링 핵심 원리] @Autowired 필드명, @Qualifier, @Primary

스프링에서 조회 대상 빈이 2개 이상일 때 해결할 수 있는 방법을 알아보자. @Autowired 필드명 @Qailifier → @Qailifier끼리 매칭 → 빈 이름 매칭 @Primary 사용 1. @Autowired 필드 명 매칭 @Autowired 는 타입 매칭을 시도하고, 이때 여러 빈이 있으면 필드 이름, 파라미터 이름으로 빈 이름을 추가 매칭 타입 매칭 타입 매칭의 결과가 2개 이상일 때 필드 명, 파라미터 명으로 빈 이름 매칭 기존 코드 @Autowired private DiscountPolicy discountPolicy; 필드 명을 빈 이름으로 변경 @Autowired private DiscountPolicy rateDiscountPolicy; 2. @Qualifier 사용 @Qualif..

Tech/Spring 2022.01.19

[BOJ] 백준 1987 알파벳 c++ (dfs, 백트래킹, 그래프)

문제 출처 : https://www.acmicpc.net/problem/1987 1987번: 알파벳 세로 R칸, 가로 C칸으로 된 표 모양의 보드가 있다. 보드의 각 칸에는 대문자 알파벳이 하나씩 적혀 있고, 좌측 상단 칸 (1행 1열) 에는 말이 놓여 있다. 말은 상하좌우로 인접한 네 칸 중의 한 칸으 www.acmicpc.net 풀이 dfs를 사용하여 해결한 문제이다. 그래프 문제에서 자주 쓰는 dx, dy 배열을 선언해 4방향 탐색을 돌려주면 된다. 여기서 주의할 점이 다음 dfs를 호출할때 cnt + 1, cnt++, ++cnt 에 따라 결과값이 달라진다는 것에 유의하자. dfs(row + dy[i], col + dx[i], cnt + 1); 코드 #include #include using nam..

Tech/Algorithm 2022.01.17
728x90
반응형