728x90
반응형

전체 글 82

[Jenkins, Docker] Jenkins CI/CD Docker-out-of-docker 방식으로 구현하기

저번 프로젝트 때 Jenkins pipeline을 쉘 접속을 활용했던 게 마음에 안 들어서이번 프로젝트에서는 꼭 DooD를 구현하겠다 마음먹고 다시 구현해봤다. 다른 방식으로 구현하면서 깨달은 점이 있다면 1. .env파일은 프로덕션 환경에서 만들거나 관리할 필요가 없다.전부 jenkins credential에 만들어두고 compose up 할 때 환경 변수를 withcredentials 이용하여 주입해주기만 하면 되는 것이었다...!이 사실을 알고 나서 빌드 프로세스의 이해가 쉬워지고, 구현이 간편해졌다.- 그럼 jenkins credential이 무엇이냐?: 환경 변수나 계정 정보와 같은 민감한 정보를 관리해주는 역할을 한다. 2. scm checkout하면 jenkins 아래에 jenkins_wor..

[Nginx, React, Docker] 웹서버와 웹 프로젝트 컨테이너 분리하기

우선 분리한 이유기존에는 react + nginx를 합쳐서 프론트엔드 빌드가 끝나면 nginx를 실행하는 방식을 사용했다. 이렇게 하게 되면 불편한 점이: 프론트엔드 빌드가 실패하면 그대로 전체 서버가 죽어버린다.프론트엔드 빌드는 실패해도 기존의 정적 파일을 서빙하는데기존 컨테이너 방식으로는 nginx가 프엔 빌드 실패 시 실행을 안 해서 서빙을 못 한다.게다가 nginx가 리버스 프록싱도 같이 하기 때문에 백엔드 서버 게이트웨이가 죽어버리면................. 이런 이유로 분리했다. 기존의 docker-compose.yml의 client 부분services: client: build: context: ./client dockerfile: Dockerfile c..

[Ssafy/싸피] 9달차 일기: 특화프로젝트 + 싸탈

일단 나는 삼성전자 연계 프로젝트로 특화프로젝트를 대체하여 진행했다.선발 시 중요한 것: 출석, 학습 참여도, 동료평가, 성적우수, B형..전공자만, B형 보유자만, 성적우수만 선발되는 건 아니다. 그렇다고 B형 10명에 A형 1명 이런 구조도 아니다. 선발된 인원 라인업을 보면 성실도와 공통 프로젝트 때 팀원 평가 등이 큰 영향을 끼친다고 생각한다. 그러니 다니는 동안 성실하게 열심히 하십쇼... 알아봐줍니다.전자연계 선발되면서 서울캠퍼스도 제법 자주 왔다갔다하고.. 또 여기저기 가보는 곳이 많아서 새로운 경험 많이 했다. 싸피아니었으면 삼성전자 근처도 못 갔을 텐데 😅특성상 대외비가 더 많아서(?) 어떤 프로젝트 하는지, 활동 어떤 거 하는지는 여기에 안 쓰지만 아무튼 우수한 사람들 많이 오고, 다..

SWE/SSAFY 2025.04.04

[Ssafy/싸피] 7 - 8달차 일기: 공통프로젝트 (+회고)

공통프로젝트 기간 시작하기전에...! 매우 중요한 걸 한다.2학기부터 비전공자랑 반이 섞이기때문에 시작 전에 팀빌딩 하는 기간동안 WebEx로 자기소개를 하는데...이 자기소개를 잘 만드는게 생각보다 정말 중요하다.진정한 기업의 서류 합격과정을 체험하는 기분이었다...특화 자율만 해도 이런 바이브 안 나온다.공통 프로젝트 한정 서로 잘 모르는 상태기 때문에 다들 자기소개 페이지 보고 팀원으로 누굴 데려올지 판단하기 때문이다.주로 전공자인지 비전공자인지,이력과 포지션, 기술스택을 작성하는데B형이거나 A+거나... 성적우수자거나.. 혹은 수상경력/논문, 자격증(전공자는 효과 미미하고, 비전공자일 경우 도움 많이 됨) 같은 정량적인 것들은 적어두는 걸 추천한다.결국 사람이 많으니 정량적인 것을 보고 판단하게 ..

SWE/SSAFY 2025.03.02

[Nginx, WebSocket] Invalid character found in method name [ ]. HTTP method n

GPT를 그렇게 돌렸는데 뭐가 문제였을까나이게 그 서버는 https를 원하는데 http가 와서 에러가 계속 났었다나의 경우에는 STOMP 소켓은 당시 http였고일반 WebSocket은 https여서그런가 이런 에러가 났던거다결과적으로는 nginx 패스를 하도록 location에 해당 소켓 엔드포인트를 추가하고, worker_processes auto;error_log /var/log/nginx/error.log;pid /run/nginx.pid;events { worker_connections 1024;}http { include /etc/nginx/mime.types; default_type application/octet-stream; limit_req_zone $..

[Docker, AWS, Jenkins, Spring Boot, Nginx, React, MySQL, Redis, RTMP/HLS] 프로젝트 인프라 세팅하기 (3) - AWS EC2 설정

네 이번에는 Spring Boot로 백엔드 서버만 달라졌습니다. 우선 EC2 접속하면 할 일1. Docker 설치https://docs.docker.com/engine/install/ubuntu/ UbuntuJumpstart your client-side server applications with Docker Engine on Ubuntu. This guide details prerequisites and multiple methods to install Docker Engine on Ubuntu.docs.docker.com# Add Docker's official GPG key: sudo apt-get update sudo apt-get install ca-certificates curl sudo i..

[Docker, AWS, Jenkins, Spring Boot, Nginx, React, MySQL, Redis, RTMP/HLS] 프로젝트 인프라 세팅하기 (2) - Jenkins로 CI/CD 구축하기

빌드를 어떤 방식으로 진행했는가?1) Docker-in-docker 방식 (Jenkins 컨테이너에 Docker 설치하여 빌드)2) SSH 접속하여 해당 EC2에서 쉘 스크립트 실행 (Jenkins 컨테이너에서 호스트 EC2에 SSH 접속)저는 2번째 방식으로 빌드했습니다.Docker-compose.yml 파일의 작성 방식 상 다른 컨테이너와 Jenkins 컨테이너가 같은 단에서 돌고 있기 때문에 DnD방식은 번거롭고, 그다지 원하지 않는 방식이어서 쉘 실행 방식으로 빌드했습니다. Jenkins 실행하기Jenkins는 docker container로 실행이 가능합니다.1) 첫 실행 시 콘솔창에 비밀번호가 출력되므로 해당 비밀번호로 로그인하시고, admin 계정을 셋업하시면 됩니다.2) 필요한 플러그인을 ..

[Docker, AWS, Jenkins, Spring Boot, Nginx, React, MySQL, Redis, RTMP/HLS] 프로젝트 인프라 세팅하기 (1) - nginx.conf, Dockerfile, Docker compose 작성

2년 반 만의 인프라 세팅이다.2년 전에는 그냥 api테스트하려고 docker썼는데 이번엔 좀 다르다. 0. 폴더 구조├── aws (키 보관, gitignore 설정으로 레포에 올라가지 않음)├── client│ ├── Client project│ ├── Dockerfile├── db│ ├── init.sql (DDL 정의 - schema) ├── hls (폴더 이하 내용은 방송 시작 시 생성, 종료 시 삭제됨) │ ├── 스트리밍key-스트림번호.ts│ ├── 스트리밍key.m3u8├── media├── nginx│ ├── default.conf # client 요청 처리할 웹서버│ ├── rtmp.conf # nginx-rtmp 전용├── server│ ├── Server project├── .gi..

728x90
반응형