728x90

전체 글 95

[Docker] Docker Compose 사용해 web, db 컨테이너 연결하기 (springboot, mariadb) (2-tier 구조)

목차 1. Docker Compose 생성하기 2. Local에서 db의 데이터 띄우는 간단한 web 구현하기(SpringBoot + MariaDB) 3. jar 파일 만들기 4. Dockerfile 만들기 5. 실행시키기 6. db 컨테이너 초기 설정 7. web 컨테이너 실행시키기 만약 도커가 설치되어있지 않다면 다음 글을 참고해주세요. [Docker] 도커 시작하기 - 1. 도커 설치하기 (tistory.com) 도커의 기본적인 명령어를 모른다면 다음 글을 참고해주세요. [Docker] 도커 시작하기 - 2. 도커 기본 명령어 (tistory.com) 1. Docker Compose 생성하기 먼저, 원하는 위치에 프로젝트 폴더를 생성하고, docker-compose.yml 파일을 만든다. versi..

Infra/Docker 2021.11.17

[Docker] Docker Compose 사용하기

Docker Compose를 이용하면 여러개의 컨테이너로 구성된 애플리케이션을 하나의 파일에 정의해두고 한 번에 올리거나 내릴 수 있다. 이러한 편리함 때문에 Docker Compose는 특히 로컬 개발 환경이나 테스트 자동화 환경에서 많이 사용되고 있다. Docker Compose를 사용하면 실행에 필요한 옵션을 docker-compose.yml이라는 파일에 적어둘 수 있고, 컨테이너 간 실행 순서나 의존성도 관리할 수 있다. docker-compose.yml 파일 생성하기 먼저, 프로젝트의 최상단 디렉토리(프로젝트 루트)에 docker-compose.yml 파일을 만든다. version: '3' services: db: images: volumes: environment: web: build: env..

Infra/Docker 2021.11.17

[Docker] Docker Network 사용하기

Docker Network 도커 컨테이너 간 연결을 하기 위해서는 Docker Network를 사용해야 한다. 즉, Docker Network란 같은 호스트 내에서 실행중인 컨테이너 간 연결할 수 있도록 돕는 논리적 네트워크 개념이다. 공식문서를 보면 --link는 곧 사라질 예정이며, 해당 기능 대신 Network를 사용하도록 권장하고 있다. 종류 - Default Bridge Network Docker에서 제공하는 네트워크로, 실제 프로덕션 환경에 적합하다고 볼 수는 없다. 간단히 개발환경에서 테스트를 위해 사용하면 좋다. - User-Defined Bridge Networks 같은 Docker Host 내에서 실행중인 컨테이너 간 연결할 수 있는, 사용자 정의 브릿지 네트워크이다. 실제 프로덕션 환..

Infra/Docker 2021.11.17

[Spring Boot] Could not find javax:servlet:jstl. 오류 해결

jsp 파일을 만들고 springboot와 연동 후, jar 파일을 만들었을 때 다음과 같은 오류가 발생하였다. 이유는 jsp는 jar 패키징을 할 수 없기 때문이다. 공식 문서에서 jsp 대신 FreeMarker Groovy Thymeleaf Mustache 템플릿 엔진들을 쓰라고 말해주고 있다. 참고 28. Developing Web Applications The Spring Web MVC framework (often referred to as simply “Spring MVC”) is a rich “model view controller” web framework. Spring MVC lets you create special @Controller or @RestController beans to..

Infra/Spring 2021.11.17

[MariaDB] MariaDB 시작하기 - 테이블 만들고 조회하기

환경은 Docker 입니다. (+ 명령 프롬프트) docker exec -it mariadb /bin/bash mariadb 컨테이너 실행하기 mysql -u root -p db 접속하기 show databases; db 조회 create database test; test db 생성하기 use test; test db 접속 create table disposable_table( disposable_string VARCHAR(32) , disposable_int INT(8) ); create문 통해 테이블 생성 MariaDB [test]> show tables; +------------------+ | Tables_in_test | +------------------+ | disposable_table ..

Infra/DB 2021.11.17

[Docker] 도커에 MariaDB 설치하기

docker pull mariadb mariadb 이미지를 내려받는다. docker images mariadb 이미지가 잘 받아졌는지 확인한다. docker run -p 3306:3306 --name mariadb -e MARIADB_ROOT_PASSWORD={비밀번호} -d mariadb -p 3306:3306 : 호스트와 컨테이너의 포트를 연결(포워딩) --name mariadb : 컨테이너 이름을 mariadb로 설정 -e MARIADB_ROOT_PASSWORD={비밀번호} : 컨테이너 내 환경변수 설정. mariadb의 비밀번호 지정. -d: 백그라운드 모드 설치가 완료되었다. 이제 기타 설정을 위해 MariaDB 컨테이너에 접속할 것이다. docker exec -it mariadb /bin/ba..

Infra/Docker 2021.11.16

[Docker] 도커에 Spring Boot 구축하기

목차 1. Spring Boot 코드 작성 2. jar 파일 생성 3. Dockerfile 만들기 4. 컨테이너 실행하기 1. Spring Boot 코드 작성 간단한 Hello World 코드를 구현했다. 소스코드는 다음과 같다. package hello.hellospring; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestControll..

Infra/Docker 2021.11.16

[Spring Boot] Plugin [id: 'org.springframework.boot', version: '2.5.6'] was not found 오류 해결하기

Build file 'C:\Users\{유저네임}\Downloads\demo\demo\build.gradle' line: 2 Plugin [id: 'org.springframework.boot', version: '2.5.6'] was not found in any of the following sources: * Try: Run with --info or --debug option to get more log output. Run with --scan to get full insights. * Exception is: org.gradle.api.plugins.UnknownPluginException: Plugin [id: 'org.springframework.boot', version: '2.5.6']..

Infra/Spring 2021.11.16

NAT(Network Address Translation)란?

NAT(Network Address Translation, 네트워크 주소 변환) IP 패킷의 TCP/UDP 포트 숫자와 소스 및 목적지의 IP 주소 등을 재기록하면서 라우터를 통해 네트워크 트래픽을 주고 받는 기술이다. NAT를 이용하는 이유는 대개 사설 네트워크에 속한 여러 개의 호스트가 하나의 공인 IP 주소를 사용하여 인터넷에 접속하기 위함이다. NAT는 IPv4의 주소 부족 문제를 해결하기 위한 방법으로써 고려되었으며, 주로 사설 네트워크 주소를 사용하는 망에서 외부의 공인망(예를 들면 인터넷)과의 통신을 위해서 네트워크 주소를 변환하는 것이다. 즉, 내부 망에서는 사설 IP 주소를 사용하여 통신을 하고, 외부망과의 통신시에는 NAT를 거쳐 공인 IP 주소로 자동 변환한다. NAT을 사용하는 목적..

Infra/Network 2021.11.15

[Docker] 도커 시작하기 - 2. 도커 기본 명령어

도커 실행하기: run docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...] 옵션 설명 -d detached mode 백그라운드 모드 (생략 시 프로세스가 foreground로 실행되어 아무 키도 입력할 수 없게 됨.) -p 호스트와 컨테이너의 포트를 연결 (포워딩) -p :/ * host port number: 호스트 시스템에서 사용되는 포트 번호 * container port number: 컨테이너 내에서 사용되는 포트 번호 * protocol: 프로토콜 유형 - udp, tcp, stcp 등 (기본값: tcp) -v 호스트와 컨테이너의 디렉토리를 연결 (마운트) -e 컨테이너 내에서 사용할 환경변수 설정 --name 컨테이너 이름 설정 (옵션 생..

Infra/Docker 2021.11.15

[Docker] 도커 시작하기 - 1. 도커 설치하기

도커(Docker)란? 도커는 리눅스의 응용 프로그램들을 프로세스 격리 기술들을 사용해 컨테이너로 실행하고 관리하는 오픈소스 프로젝트이다. 컨테이너란? 도커 컨테이너는 일종의 소프트웨어를 소프트웨어의 실행에 필요한 모든 것을 포함하는 완전한 파일 시스템 안에 감싼다. 여기에는 코드, 런타임, 시스템 도구, 시스템 라이브러리 등 서버에 설치되는 무엇이든 아우른다. 이는 실행 중인 환경에 관계 없이 언제나 동일하게 실행될 것을 보증한다. 초보를 위한 도커 안내서 - 도커란 무엇인가? (subicura.com) 초보를 위한 도커 안내서 - 도커란 무엇인가? 도커를 처음 접하는 시스템 관리자나 서버 개발자를 대상으로 도커 전반에 대해 얕고 넓은 지식을 담고 있습니다. 도커가 등장한 배경과 도커의 역사, 그리고 ..

Infra/Docker 2021.11.15

[Jenkins] CentOS에 Jenkins 설치하기

Jenkins란? Java로 제작된 오픈소스 CI(Continous Integration) 툴이다. 즉, 소프트웨어 개발 시 지속적으로 통합 서비스를 제공하는 툴이다. 다수의 개발자들이 하나의 프로그램을 개발할 때 버전 충돌을 방지하기 위해 각자 작업한 내용을 공유 영역에 있는 저장소에 빈번히 업로드함으로써 지속적 통합이 가능하도록 해주는 자동화 서비스이다. 다음과 같은 특징이 있다. - 각종 배치 작업의 간략화 - Build 자동화의 확립 - 자동화 테스트 - 코트 표준 준수여부 검사 - 빌드 파이프라인 구성 Java 언어로 만들어진 애플리케이션으로 Jenkins WAR를 단독 또는 Tomcat에 올려 실행할 수 있다. 젠킨스를 이용해 소스를 자동 빌드시키고 실 서버에 배포해보자. 설치 목차 1. jd..

Infra/Jenkins 2021.11.15

[CentOS] CentOS7에 Gradle 설치하기

Gradle을 설치하기 위해서 jdk1.8 버전 이상이 설치되어있어야 한다. 목차 1. wget을 이용한 gradle 설치 2. 환경변수 설정 3. 설치 확인 1. wget을 이용한 gradle 설치 yum install wget wget을 처음 쓴다면 yum 명령어를 이용해 설치해준다. 중간에 y 입력해주고, Complete!이 뜬다면 설치가 완료된 것이다. wget https://services.gradle.org/distributions/gradle-7.0.2-bin.zip 이후 wget을 이용해 gradle.zip을 가져온다. https://services.gradle.org/distributions Gradle Distributions services.gradle.org 다음 링크에서 버전 확인..

Infra/CentOS 2021.11.12

[Linux] 보안을 위한 git 계정의 shell 권한 제한

git 계정은 깃 서버로서의 역할 외에는 해야 할 일이 없다. 만약 bash 사용 권한을 제한하지 않으면 git 계정으로 ssh에 접근하는 유저들이 서버의 파일들을 조작할 수 있어서 보안상 바람직하지 않으므로 shell 실행 권한을 제한해야 한다. 방법은 다음과 같다. [root@centosserver ~]# sudo vi /etc/passwd 다음 명령어로 /etc/passwd 파일을 연다. git 정보를 찾고 bash를 git-shell로 변경한다. # 변경 전 git:x:1001:1001::/home/git:/bin/bash # 변경 후 git:x:1001:1001::/home/git:/bin/git-shell 1001:1001은 환경에 따라 다르므로 만약 다르다면(ex 1002:1002) 그대로 ..

Infra/Linux 2021.11.12

[Linux] 리눅스 디렉토리 구조

리눅스와 윈도우의 비교 리눅스 윈도우 /(슬래시) \(역슬래시) 디렉토리 폴더 리눅스 디렉토리 구조 리눅스는 파일을 계층적으로 관리하는 트리 구조를 띈다. 디렉토리 설명 /(루트) 최상위 디렉토리인 루트 디렉토리. 리눅스의 모든 디렉토리의 시작점 /bin 기본적인 명령어가 저장된 디렉토리. /boot 리눅스 부트로더가 존재하는 디렉토리. 부팅 관련한 파일 디렉토리. /sbin 시스템 관리를 위한 명령어가 저장된 디렉토리. /dev 시스템 디바이스를 저장하고 있는 디렉토리. 즉, 하드디스크 장치파일 /dev/sda, CD-ROM 장치파일 /dev/cdrom 등과 같은 장치파일들이 존재하는 디렉토리 /etc 시스템의 거의 모든 설정 파일이 존재하는 디렉토리. /etc/sysconfig(시스템 제어판용 설정파..

Infra/Linux 2021.11.09

[MariaDB] CentOS7에 MariaDB 설치하기

MariaDB MariaDB는 오픈소스의 관계형 데이터베이스 관리 시스템(RDBMS)이다. MySQL과 소스코드를 같이 사용하므로 사용 방법과 구조가 MySQL과 동일하다. 마리아DB 커뮤니티는 MySQL과 비교해 애플리케이션 부분 속도가 약 4~5천배 정도 빠르며, MySQL이 갖는 모든 제품의 기능을 완벽히 구현하면서도 성능 면에서는 최고 70%의 향상을 보이고 있다고 주장한다. 목차 1. MariaDB yum 저장소 추가 2. MariaDB 설치 3. MariaDB 시작 및 패스워드 변경 4. 접속 확인 5. 부팅 시 자동시작 설정 1. MariaDB yum 저장소 추가 먼저, yum repository란? Package를 모아논 저장소이다. yum을 통해 package 설치 시 활성화된 yum r..

Infra/DB 2021.11.09
728x90