728x90
반응형

Computer Science/Setup 11

[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..

[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..

[Docker, AWS, Django, Nginx, Gunicorn, React, MySQL] AWS EC2 이용해서 서버 세팅하기 (2) - docker-compose.yml, 프리티어로 AWS 인스턴스 생성

글의 길이가 길어서 2개의 게시글로 나누었습니다. (1)편 https://yourhyeony.tistory.com/61 5. docker-compose.yml 작성 version: '3' services: db: # MySQL 컨테이너 image: mysql:8.0.22 # MySQL 8.0.22 이미지 사용 container_name: my01 # 컨테이너 이름 지정 command: mysqld --character-set-server=utf8 --collation-server=utf8_general_ci --default-authentication-plugin=mysql_native_password # 캐릭터셋 유니코드로 변경하고 비밀번호 관련 설정... ports: - "3306:3306" # 33..

[Docker, AWS, Django, Nginx, Gunicorn, React, MySQL] AWS EC2 이용해서 서버 세팅하기 (1) - db, nginx, dockerfile 작성

1. 사용한 기술 스택 및 파일 구조 기술 스택 프론트는 React 백엔드는 Django 미들웨어로 Gunicorn을 사용하고, 웹서버로 Nginx Docker로 컨테이너화한 뒤 AWS에서 EC2로 배포했습니다. 파일 구조 우선 이것은 나의 프로젝트 파일 구조! client는 프론트엔드(리액트), nginx는 서버 설정 파일, db는 데이터베이스 설정 파일(스키마 생성만 있음), server는 백엔드(장고) 파일이다. 디렉토리의 세부 구조이다. server 폴더 안은 이렇게 이루어져 있고, key.json은 시크릿키랑 api키를 모아두었다. requirements.txt는 config 폴더 안에 넣어두었다. 우선 도커파일은 /server 에만 작성했다. 모델 설치하면서 필요한 작업이 늘어났기 때문이다. ..

[Python, Django, MySQL] 장고에서 MySQL 데이터베이스 사용하기

장고와 MySQL, 파이썬과 MySQL 연결하기 Python 프로그램으로 MySQL 데이터베이스를 연결하는 방법은 대표적으로 pymysql이 있지만 장고에서는 데이터베이스 설정을 별도로 제공해주기 때문에 pymysql보다는 mysqlclient만으로도 깔끔한 연결이 가능하다. 따라서 mysqlclient를 사용하는 방법과, pymysql을 사용하는 방법 2개를 전부 설명하고자 합니다. mysqlclient(추천) 1. pip로 설치할 패키지 pip install mysqlclient 2. 만약 접속하는 사람이 root가 아니라면, 다음의 사용자 생성 및 권한 설정을 해준다. create database {db이름}; use mysql; create user '{사용자이름}'@'%&#..

728x90
반응형