본문 바로가기

develop/server

(9)
[GitLab CI] React(vite) 배포 과정(삽질) 목차개요도커 이미지 다운로드 실패필요한 의존성 찾을 수 없음 에러파일 생성 오류nginx의 cache 권한 오류포트 바인딩 오류개요폐쇄망 서버에서 수동 CI로 수동 배포 하던 것을 GitLab CI를 이용해서 소스 코드 변경시 자동 CI가 되도록 작업 수행필요.gitlab과 gitlab-runner가 이미 설치되어있음을 가정함. GitLab CI를 적용하는 과정에서 발생한 오류와 이슈 정리.초기 설정 파일(참고용)//dockerfileFROM node:20 as builder# 컨테이너 내부 작업 디렉토리 설정WORKDIR /app# app dependencies# 컨테이너 내부로 package.json 파일들을 복사COPY package*.json ./# package.json 및 package-loc..
[GitLab CI] Spring Boot 배포 과정 (삽질) 목차개요의존성 다운 오류빌드 권한 오류캐시 설정도커 푸시파일 권한 오류결과개요폐쇄망 서버에서 수동 CI로 수동 배포 하던 것을 GitLab CI를 이용해서 소스 코드 변경시 자동 CI가 되도록 작업 수행필요.gitlab과 gitlab-runner가 이미 설치되어있음을 가정함. GitLab CI를 적용하는 과정에서 발생한 오류와 이슈 정리. 초기 작성한 .gitlab-ci.yml파일 (참고용)stages: - test - build - pushvariables: COMMIT_TAG: $CI_COMMIT_TAG COMMIT_BRANCH: ${CI_MERGE_REQUEST_TARGET_BRANCH_NAME} IMAGE_TAG: $CI_COMMIT_TAG HARBOR_URL..
[npm] 폐쇄망 환경에서 배포시 의존성 문제 해결하기 목차개요npm과 yarnyarn을 사용하는 이유배포개요외부 인터넷을 사용할 수 없는 폐쇄망 환경(또는 네트워크 환경이 느린 환경)에서 빌드 또는 실행에 필요한 의존성을 받아올 수 없는 상황에서 의존성을 사용할 수 있게 하기. node.js 기반의 react 개발을 잘 모르는 상황에서 프론트 개발자에게 react프로젝트를 인수인계 받았고, 관리하고 있는 서버에 배포해야하는 상황. Docker를 이용해서 배포 하려고 하니 npm을 통해 빌드시 의존성을 찾을 수 없다는 에러가 발생함.npm과 yarnnpm과 yarn은 자바스크립트 패키지 매니저입니다.패키지는 npm에 등록된 노드 모듈로써, 다양한 자바스크립트 프로그램으로 구성되어 흔히 의존성이라고 합니다. npm은 이러한 의존성들의 다운로드, 의존성 관리, ..
[ERROR] GitLab pipeline pending (Job is stuck. Check runners.) 목차이슈원인해결이슈gitlab-runner를 등록한 후 프로젝트의 소스코드를 수정해서 gitlab에 올렸는데 파이프라인의 상태가 pending에서 멈춰있음. 사용할 runner의 상태는 온라인으로 정상적으로 연결되어있는것을 확인했음. 원인문제의 원인은 등록된 runner가 너무 많아서 stage를 실행할 때 어떤 runner를 실행해야할지 몰라서 발생한 이슈. 해결각 stage를 수행할 runner를 선언해주면 된다.각 stage 블럭에 tags로 runner의 태그를 작성해주면 작업을 수행할 runner를 지정해서 정상적으로 동작함.stages: - test - build - pushvariables: COMMIT_TAG: $CI_COMMIT_TAG COMMIT_BRANCH:..
[Docker] 폐쇄망 React + Nginx 도커 이미지로 배포 목차개요nginx.conf 생성Dockerfile 생성Docker image 생성Docker Container 실행개요폐쇄망에서 react 프론트 프로젝트를 nginx와 함께 구축해서 배포 spring boot의 경우 배포할때 profiles 설정, 필요 환경변수과 함께 jar(executable jar)파일 생성 후 도커 이미지를 container로 실행만하면 웹 서버가 쉽게 구성이 됩니다.(spring boot의 장점 중 하나인 내장 tomcat) 하지만 react의 경우 node.js와 express 모듈을 이용해 웹 서버를 구성할 수있지만, 로드밸런싱, 캐싱 등의 안정적이고 효율적인 웹 서버이자 리버스 프록시 서버인 nginx를 함께 구성해주는것이 좋습니다. react를 이용한 프론트를 웹 서버인..
[GitLab] GitLab Runner 등록 목차CI/CD란?GitLab CI/CDgitlab runner란?gitlab runner 등록CI/CD란?CI (Continuous Integration)지속적인 통합이라는 뜻으로, 코드 변경을 지속적으로 빌드/테스트하는 과정 CD (Continuous Delivery /Deployment)지속적인 전달, 배포라는 뜻으로, 통합된 코드를 배포하는 과정Continuous Delivery애플리케이션이 배포되기 전까지 작업을 자동화 하고 실제 배포는 사람이 개입하여 실행Continuous DeploymentCI를 통해 신규 작성된 코드의 무결성을 검증하고 배포 작업을 진행하고 완료시 자동으로 배포까지 진행GitLab CI/CDGitLab은 소프트웨어 개발 및 협업 솔루션을 제공하는 웹 기반 DevOps 플랫폼..
[Docker] 폐쇄망에서 프로젝트 구축하기 목차개요React(dist) 프로젝트 배포하기Spring boot 프로젝트 배포하기개요외부에서 작업된 프론트(react)와 백엔드(spring boot)를 내부망 pc에 배포 작업이 필요함. 상황로컬pc에서는 외부망과 내부망(폐쇄망) pc에 둘다 접근이 가능.내부망pc에 harbor(이미지 저장소), postgresql(DB), gitlab(코드 버전 관리 및 CICD) 등의 기존 설치된 프로그램 사용.외부망과 연결되면서 리눅스 사용을 위해 VM 설치.외부에서 작업된 최종 소스코드(react, spring boot)는 로컬pc로 전달받음. 환경로컬pc : 윈도우 10내부망pc(폐쇄망) : Rocky-8.7-x86_64-minimal.isoVM : Rocky-8.7-x86_64-minimal.iso 배포 ..
[Docker] Docker란 목차Docker란?명령어docker로 프로젝트 배포 하기Docker란?Docker를 설명하기에 앞써 VM과 Container의 개념 차이를 알아보겠습니다.VM(Virtual Machines)VM은 호스트의 컴퓨터에 소프트웨어를 실행시키는 가상 시스템입니다.Hypervisor라는 하드웨어는 가상 머신 모니터가 VM을 만들고 각 VM은 독립적인 OS를 가지면서 어플리케이션 들을 동작시킵니다. 하나의 컴퓨터 위에 여러 컴퓨터를 설치해서 사용할수 있다는 장점을 가지고 있지만, 웹서버 등과 같은 어플리케이션 하나만을 실행하기 위해 OS를 설치하는 건 굉장히 무거운 작업입니다.이러한 VM의 단점을 개선하기 위해 나온 개념이 Container입니다. Docker 등 서버 관련 공부 또는 작업 테스트때 VM을 꽤 유용..