IT/클라우드

[오라클 클라우드] 무료 웹 서버 구축기2 (인텔리제이, 도커)

snapcoder 2024. 8. 11. 23:32
728x90
반응형
SMALL

[오라클 클라우드] 무료 웹 서버 구축기2 (인텔리제이, 도커)

 

 

이 게시물의 결과물을 미리 맨위에서 보여드립니다.
아직 아무것도 없지만 API 이거저거 붙여볼 생각에 설레네요 (OpenAI 딱 기다려 !)

http://caracter-test.kro.kr/

 

 

 

 

대범이가 노래를 부른 그놈의 도커.

이번 기회에 나도 한번 직접 해보자는 생각이 들었다.

 

 

 

 

도커란 무엇인가?

Go언어로 작성된 리눅스 컨테이너 기반으로 하는 오픈소스 가상화 플랫폼이다.
다시 말해 특정한 서비스를 패키징하고 배포하는데 유용한 오픈소스 프로그램이다.

 

 

 

 

도커를 왜 사용할까?

1. 애플리케이션 독립성을 가진다. 호스트 OS, 다른 컨테이너와도 독립된 공간을 보장받아 충돌이 발생하지 않는다.
2. 컨테이너 내부에 작업 후 배포하려 한다면 도커 이미지로 만들어서 운영서버에 전달만 하면 된다.
3. 마이크로 서비스 구조로 변화가 쉽다. 컨테이너 하나당 하나의 기능을 제공하는 모듈로 만드는 등 조정이 가능하다.

 

=> 다시 말해, Docker을 사용하면 환경에 구애받지 않고 애플리케이션을 신속하게 배포, 확장할 수 있다.

 

 

 

 

 

 

도커 이미지와 컨테이너란?

간단하게 설명하면 도커 이미지는 설계서, 컨테이너는 설계서로 만들어진 상품이다.
게다가 이미지가 중간에 바꾸게 되더라도 기존 컨테이너는 더 이상 이미지에 영향을 받지 않는다.

 

 

 

 

 

도커 파일이란?

Doker File은 이미지 생성 출발점으로 이미지를 구성하기 위한 명령어들을 작성하여 이미지를 구성할 수 있다.
다시 말해, 만들 이미지에 대한 정보를 기술한 템플릿이라고 보면 된다.

 

이를 빌드하면 자동으로 이미지가 생성된다. 그러므로 도커 파일을 통해 애플리케이션 빌드 및 배포를 자동화할 수 있다.

 

 

 

 

 

 

 

 

도커 설치 방법 3가지

도커를 CentOS 리눅스에 설치하는 방법은 3가지 방법이 있습니다.

 

1. yum 자동설치 : 도커 레파지토리를 설정하고 인터넷을 통해 yum 명령으로 도커를 설치하는 방법

2. 패키지 직접 수동 설치 : rpm 패키지 파일을 다운로드하여 yum 명령어로 설치하는 방법

3. 스크립트 자동설치 : 도커 사이트에서 제공하는 설치용 스크립트 (sh) 파일을 받아 실행하여 설치하는 방법

 

참고

https://docs.docker.com/

 

Home

Docker Documentation is the official Docker library of resources, manuals, and guides to help you containerize applications.

docs.docker.com

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1번 방법인 yum 자동설치 방법으로 진행

2024.08.05 - [IT/기타] - [오라클 클라우드] 무료 웹 서버 구축기 (2024년 기준 평생 무료 VPS 호스팅, 무료 도메인 등록, SSL 인증서 자동갱신)

 

[오라클 클라우드] 무료 웹 서버 구축기 (2024년 기준 평생 무료 VPS 호스팅, 무료 도메인 등록, SSL

[오라클 클라우드] 무료 웹 서버 구축기 (2024년 기준 평생 무료 VPS 호스팅, 무료 도메인 등록, SSL 인증서 자동갱신)    이 무궁무진한 WWW 세상 속에나도 내 웹페이지 하나쯤 만들어

snapcode.tistory.com

 

이전 글에서 "yum 오류 해결" 부분까지 진행해서 일단 서버를 띄워놓겠습니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

yum 목록에서 docker-ce 조회

$sudo yum list | grep docker-ce

 

yum-utils package 설치

도커 레파지토리를 설정하기 전에 yum-utils 패키지를 먼저 설치합니다.

$ sudo yum install -y yum-utils

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

이제 도커를 다운받을 stable 레파지토리 추가를 yum-config-manager 명령으로 설정합니다.

$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

도커 레파지토리 추가 확인

$ ll /etc/yum.repos.d/

yum 목록 docker 조회

$ sudo yum list | grep docker-ce

 

도커패키지 설치

$ sudo yum install docker-ce docker-ce-cli containerd.io

 

오분정도 걸린거같은데 아무튼 성공 !

 

 

 

 

 

 

 

 

 

 

도커 실행 및 재기동시 자동실행 설정

$ sudo systemctl start docker
$ sudo systemctl enable docker
$ sudo docker version

 

 

 

 

 

 

 

 

 

 

sudo 입력하지 않게 설정해두기

docker를 쓰다보면 sudo를 항상 붙여줘야 하는데 이는 docker 명령을 root 권한으로 실행해야 하기 때문에 일반 계정에서는 sudo가 항상 붙는 것이다. 매번 입력하기 귀찮고 빠뜨릴 때도 많다. sudo를 입력하지 않는 방법은 2가지이다.

 

1. 처음부터 root 계정으로 로그인하거나 root 계정으로 전환

sudo su #root 계정으로 전환

 

2. 현재 계정을 docker 그룹에 포함

 

  1. 도커 그룹 추가 확인(필요 시 생성):
    sudo groupadd docker
  2. 현재 사용자를 도커 그룹에 추가:
    sudo usermod -aG docker $USER
  3. 로그아웃/로그인하거나 현재 셸 세션 다시 로드:
    newgrp docker
  4. 설정 확인:
    docker run hello-world

이 절차를 완료하면 sudo 없이 docker 명령을 실행할 수 있습니다.

 

 

 

 

 

 

 

 

 

 

 

 

인텔리제이 테스트 프로젝트 생성 후 도커 연동하기

도커 플러그인 설치

 

 

도커 환경구성

오류메세지 그대로 도커에 연결이 안 되는데 도커 데몬이 동작은 하고 있냐고...

물어봅니다.

즉, 윈도우에 도커 설치가 되어 있어야 합니다.

그럼 윈도우에서 도커 설치를 진행해 보겠습니다.

이미 설치하신 분들은 이 부분을 건너뛰셔도 됩니다.

 

 

 

 

윈도우에 도커 설치

https://docs.docker.com/desktop/install/windows-install/

 

Install Docker Desktop on Windows

Get started with Docker for Windows. This guide covers system requirements, where to download, and instructions on how to install and update.

docs.docker.com

 

 

컴퓨터 껏다 키면

Accept 누르면 된다!

 

구글 로그인시 에러떠도 신경쓰지말고

도커 데스크탑에서 다시 sign up 버튼 눌러보자

로그인 완료

 

다시 인텔리제이 켜서

ctrl+alt+S 눌러서 설정창 켜보면 아까와 다르게

"Connection successful" 확인 가능

 

 

 

 

 

 

 

로컬로 기본 프로젝트 띄우기

 

 

 

 

 

 

 

 

이제 도커로 띄어주자 !

 

 

 

 

 

 

도커 허브에 레파지토리 생성하기

https://hub.docker.com/

 

Docker Hub Container Image Library | App Containerization

Increase your reach and adoption on Docker Hub With a Docker Verified Publisher subscription, you'll increase trust, boost discoverability, get exclusive data insights, and much more.

hub.docker.com

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Dockerfile 생성하기

 

  • 프로젝트에서 File -> New -> File을 선택하여 Dockerfile을 수동으로 생성할 수도 있지만, IntelliJ IDEA에서 제공하는 템플릿을 사용할 수 있습니다.
  • Project Explorer에서 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 Add Framework Support...를 선택합니다.
  • Docker를 선택하고 필요한 설정을 진행합니다.
  • Dockerfile 템플릿을 제공하는 옵션이 있으면 선택합니다.

 

하려고 했으나

" Add Framework Support... " 가 안보여서 수동으로 만들어줍시다.

 

나의 도메인 www.~.com 이 8080 포트가 아니라 특정 포트로 연결되길 원하시면 웹서버(Nginx나 Apache) 따로 구축하셔야 합니다. (리버스 프록시 설정)

 

내도메인.한국 으로 도메인 등록하시고 + 웹서버 따로 아직 안두신분들은 일단 80으로 하시기를 추천...

#FROM ubuntu:latest
#LABEL authors="dhl"
#
#ENTRYPOINT ["top", "-b"]

# Docker를 올릴 때 JDK 17의 슬림 이미지를 사용합니다. 이 이미지는 최소한의 패키지로 구성되어 있어 더 가볍습니다.
FROM openjdk:17-jdk-slim

# 굳이 없어도 되긴 하는데, FROM이 아니라 LABEL이 맨위에 있으면 오류나니까 주의
LABEL authors="dhl"

# jar 파일로 만들어라
# ARG JAR_FILE=build/libs/*.jar
ADD ./build/libs/*.jar caracterTestApp.jar

# Docker 컨테이너가 이 포트를 외부에 노출하도록 합니다. 환경 변수를 사용하여 포트를 설정할 수 있습니다.
EXPOSE 80

# 도커파일이 도커엔진을 통해서 컨테이너로 올라갈 때, 도커 컨테이너의 시스템 진입점이 어디인지를 알려준다.
# 컨테이너가 시작될 때 실행할 기본 명령을 지정합니다. 여기서는 java -jar /app.jar 명령어를 실행합니다.
ENTRYPOINT ["java", "-jar", "-Duser.timezone=Asia/Seoul", "/caracterTestApp.jar"]
#출처: https://devmango.tistory.com/180 [알쓸개잡:티스토리]


### 명령어 메모
# 로컬에서 도커 테스트 먼저 해보고 이상 없으면
# docker run caractertest

# 로컬에서 빌드해서 jar 만들고 push해서 도커허브에 이미지 올리자
# docker build -t caractertest .
# docker push caractertest

# 서버에서 CentOS 방화벽 설정 (firewalld) :
# sudo firewall-cmd --zone=public --remove-port=4444/tcp # 혹시몰라서 삭제도 넣어둠
# sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
# sudo firewall-cmd --reload
# sudo firewall-cmd --list-ports

# 80포트에 대해서,
# 오라클 클라우드 사이트에서 방화벽 열어주고
# application.properties 파일에도 server.port=80 넣어주자

# 서버에서 도커 이미지 다운받아서 실행시키기
# docker pull caractertest
# sudo docker run -e SPRINGBOOT_PORT=80 -p 80:80 caractertest
# sudo docker ps
# sudo docker logs <container_id>
# curl http://64.110.70.98:80/test

# docker ps
# docker stop <container_id>
# docker rm <container_id>
# docker start <container_id>
# docker restart <container_id>

 

 

 

 

 

로컬에서 Docker 이미지를 빌드 및 테스트 실행

1. 프로젝트 빌드:

  • 터미널을 열고 프로젝트 루트 디렉토리로 이동합니다.
  • 다음 명령어를 실행하여 프로젝트를 빌드합니다. Gradle을 사용하는 경우 다음 명령어를 사용합니다:
  • 빌드가 성공하면 build/libs 디렉토리에 JAR 파일이 생성됩니다.
./gradlew bootJar

 

 

 

 

 

 

2. 로컬에서 Docker 이미지 빌드:

  • 터미널에서 다음 명령어를 실행하여 Docker 이미지를 빌드합니다. 이미지 이름을 caractertest으로 지정합니다:
docker build -t caractertest .

 

도커 데스크톱에도 생겼다.

 

 

 

 

 

3. 로컬에서 Docker 컨테이너 테스트 실행:

docker login
docker run caractertest

 

 

 

 

 

 

 

4. 로컬에서 Docker Hub로 도커 이미지 올리기

docker push caractertest

 

 

로컬에서 Docker 컨테이너 테스트 실행:

  • 다음 명령어를 실행하여 Docker 컨테이너를 실행합니다. 환경 변수를 사용하여 포트를 설정할 수 있습니다.
  • 환경 변수 설정:
    • -e SPRINGBOOT_PORT=80: Docker 컨테이너 내부에서 SPRINGBOOT_PORT 환경 변수를 80으로 설정합니다.
  • 포트 매핑:
    • -p 80: 80 : 호스트의 포트 80 을 컨테이너의 포트 80 에 매핑합니다. 즉, 호스트의 http://localhost:80 에 접속하면 컨테이너의 포트 80 으로 요청이 전달됩니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

도커의 독립성과 확장성.

어느 환경에서도 실행 가능하다고 배웠습니다.

 

이젠 로컬이 아니라,

구축했었던 무료 오라클 클라우드 서버에

내가 만든 이미지를 실행시켜서 서비스를 띄워봅시다.

 

 

 

 

오라클 서버에서 도커 실행 (로컬 인텔리제이가 아니라)

 

1. CentOS 방화벽 설정

# 서버에서 CentOS 방화벽 설정 (firewalld) :
sudo firewall-cmd --zone=public --remove-port=4444/tcp # 혹시몰라서 삭제도 넣어둠
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-ports

 

 

 

2. 오라클 방화벽 설정

 

 

 

 

3. application.properties 파일 server.port 지정

(순서대로 따라오신분이라면, build랑 docker push 다시 하시기를...)

 

 

 

 

4. 서버에서 도커 이미지 실행

도커허브의 이미지 => pull 명령어로 오라클 서버로 가져오고 => run 시켜서 컨테이너 띄워놓자

# 서버에서 도커 이미지 다운받아서 실행시키기
docker pull caractertest
sudo docker run -e SPRINGBOOT_PORT=80 -p 80:80 caractertest
sudo docker ps
# sudo docker logs <container_id>
curl http://64.110.70.98:80/test

 

 

 

 

7. 실행 확인

 

 

 

 

8. 백그라운드 실행시켜두기

# 백그라운드 실행
docker run -d -e SPRINGBOOT_PORT=80 -p 80:80 caractertest


# 컨테이너 목록
docker ps

# 컨테이너 중지
docker stop <container_id>

# 컨테이너 삭제
docker rm <container_id>

# 중지된 컨테이너 재시작
docker start <container_id>

# 실행중인 컨테이너 재시작
docker restart <container_id>

 

 

 

 

 

 

삽질을 마치며 곱씹어보기...

1. 무료 서버 구축시 AWS, 구글, 오라클 등의 스펙 비교 및 고민

2. 오라클 클라우드 서버에 톰캣 및 SSL 인증서까지 직접 설치(apt-get install)

3. jar 옮겨서 서비스 실행

4. 내 서버 공인ip 무료 도메인으로 등록

5. 매번 서비스 내리고 올려야 하는가? 도커 및 컴포즈 도입 적용시작

6. 일단 스프링 부트 기본 프로젝트부터 생성 => "localhost:8080/test" 테스트

7. 로컬에서 Dockerfile 및 jar 만들어서 도커허브로 push해서 도커 이미지 생성

8. 서버에서 해당 이미지 pull 땡겨받아 run 시키기

9. 오라클 방화벽, CentOS 방화벽, 서버포트 지정 등등 맞춰주기

10. 최종 도메인 테스트 http://caracter-test.kro.kr/

 

글 내용이 긴거같아

도커 컴포즈는 별도 게시글로 작성.

 

 

 

 

 

참고링크

도커개념 : https://squirmm.tistory.com/entry/Docker-%EB%8F%84%EC%BB%A4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80

 

[Docker] 도커란 무엇인가?

1. 도커란? Go언어로 작성된 리눅스 컨테이너 기반으로 하는 오픈소스 가상화 플랫폼이다. 다시 말해 특정한 서비스를 패키징하고 배포하는데 유용한 오픈소스 프로그램이다. 컨테이너에는 라이

squirmm.tistory.com

 

도커 설치 방법 3가지

https://velog.io/@itkhj/CentOS-8%EC%97%90-%EB%8F%84%EC%BB%A4-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0yum

 

CentOS 8에 도커 설치하기(yum)

도커를 CentOS 리눅스에 설치하는 방법은 3가지 방법이 있습니다.도커 레파지토리를 설정하고 인터넷을 통해 yum 명령으로 도커를 설치하는 방법rpm 패키지 파일을 다운로드하여 yum 명령어로 설치

velog.io

 

 

스프링 부트 시작하기

https://alphalok.tistory.com/entry/%EC%9D%B8%ED%85%94%EB%A6%AC%EC%A0%9C%EC%9D%B4IntelliJ-IDEA-Spring-boot-%EA%B0%9C%EB%B0%9C-%ED%99%98%EA%B2%BD-%EA%B5%AC%EC%B6%95%ED%95%98%EA%B8%B0-%EA%B3%B5%EC%8B%9D%EB%AC%B8%EC%84%9C-%EA%B8%B0%EC%A4%80-IntelliJ-IDEA-20223-%EC%95%84%EA%B3%BC%EB%85%B8%ED%8A%B8

 

인텔리제이(IntelliJ IDEA) / Spring boot 개발 환경 구축하기 / 공식문서 기준 / IntelliJ IDEA 2022.3 / 아과

안녕하세요, 아과노트 입니다. 오늘은 인텔리제이(IntelliJ)로 Spring boot 개발환경을 구축해 보도록 하겠습니다. 먼저 공식문서로 다음 두 문서를 참고로 했습니다. Spring Boot | IntelliJ IDEA Documentation (

alphalok.tistory.com

 

도커 이미지 만들기

https://velog.io/@jummi10/create-Docker-Image-with-SpringBoot

 

SpringBoot로 Docker Image 만들어보기

IntelliJ - New Project - Spring Initializr - 새로운 스프링 프로젝트 생성root에 dockerfile 파일 생성 후 아래 코드 붙여넣기bootJar로 buildJAR_FILE=build/libs 디렉토리 안에 jar 파일이 생긴다.t

velog.io

 

도커 허브 레파지토리 생성 및 인텔리제이 연결

https://devmango.tistory.com/180

 

스프링부트 프로젝트 도커허브 이미지 빌드(feat. 인텔리제이)

* 스프링부트 프로젝트 생성 참고 : https://devmango.tistory.com/96 1. 스프링 부트 프로젝트 생성 - IntelliJ 기준 1. IDE를 이용하여 직접 생성하기 1) 인텔리제이에서 [새 프로젝트] 버튼을 클릭한다. 2) Sprin

devmango.tistory.com

 

도커 백그라운드 실행

https://mvje.tistory.com/165

 

[Docker] (5) 도커 run 명령어 옵션, 도커 컨테이너가 종료되지 않게 하는 방법

Docker 전체 포스팅 더보기 [Docker] (1) 도커 개념 설명 | 도커는 왜 사용하는 걸까? [Docker] (2) 도커 & 도커컴포즈 다운로드 [Docker] (3) 도커 핵심 개념 - 이미지, 컨테이너, 도커 허브 [Docker] (4) docker pull(

mvje.tistory.com

 

 

대범아 도와줘서 고맙다 화이팅하자

728x90
반응형
LIST