목록전체 글 (244)
오늘도 한 뼘 더

# 배경 - Golang으로 된 프로젝트를 빌드하는 과정에서 docker 명령어가 작동하지 않는 문제가 발생하였다. # Docker 명령어 문제 해결하기 - 다음 에러를 보고 Docker Desktop을 시작하지 않아서 생기는 문제라고 인식 - Docker Desktop을 시작했더니 다음과 같은 에러가 발생했다. - 이 문제가 window의 경우 docker를 사용하기 위해 가상화를 설정해야 하는데 이 가상화가 제대로 작동하지 않아 생기는 문제라고 한다. # 가상화 설정 1. Hyper-V가 비활성화된 경우 - GUI로 활성화 시키기 1) Window 기능에서 해당 내용에 대한 기능들을 켜준다. 2) 작업 관리자 > 가상화가 사용으로 되어있으면 된다. - window Command Line으로 가상화를 ..

# 배경 회사 업무를 진행하다 보면 배포 시기가 서로 다른 업무들이 있다. 이런 경우 전체 브랜치를 운영 브랜치로 올릴 수 없기 때문에 원하는 commit만 merge하는 방법이 필요하다. 이 때, cherry pick을 사용한다. # Cherry-Pick git log를 통해 체리픽하고자 하는 commit ID를 확인한다. git log --pretty=oneline 체리픽을 할 브랜치를 하나 체크아웃 한다. git checkout -b {cherry-pick-issueNO.} commit ID로 체리픽을 한다. git cherry-pick {$git commit ID} 체리픽을 진행한 브랜치를 푸쉬한다. git push origin {cherry-pick-issue#}

# 배경 Window에서 MySQL Workbench를 통해 Export 한 데이터를 Ubuntu 서버에서 사용하기 위해 전송이 필요했다. # SCP(Secure Copy)를 사용한 OS간 파일 전송 ## SCP 옵션 -r : 폴더를 복사할 때 사용 -p : 원본파일의 권한 및 속성을 유지하여 복사 -P : 포트번호를 지정하여 복사 -c : 압축하여 복사 -v : 복사가 되는 과정을 출력한다. -a : 아카이브 모드로 복사 ## 단일 파일 복사 1. 로컬에서 원격으로 (Local -> Remote) $ scp [옵션] [파일명] [원격 id]@[원격 ip]:[받는 위치] ex) $ scp ./aaa.tar ubuntu@XXX.XXX.XXX.XXX:~/data_backup 2. 원격에서 로컬로 (Remot..

# 문제 정수 n개가 주어졌을 때, n개의 합을 구하는 함수를 작성하시오. Go: sum(a []int) int a: 합을 구해야 하는 정수 n개가 저장되어 있는 배열 (0 ≤ a[i] ≤ 1,000,000, 1 ≤ n ≤ 3,000,000) 리턴값: a에 포함되어 있는 정수 n개의 합 # 코드 package main func sum(a []int) int { var r int for _, i := range a { r += i } return r }

# 배경 - AWS ElasticBeanstalk으로 배포하고 있는 Service(Backend) 프로젝트를 도커 컨테이너로 배포하여 사용하기 위해서 도커 컨테이너가 올라가는 서버에 Nginx를 설치하고 도메인과 연결할 수 있도록 한다. # Nginx란? - 웹 서버 소프트웨어이다 - 웹 서버, 리버스 프록시 및 메일 프록시 기능을 가진다. ## Nginx 설치하기 https://ubuntu.com/tutorials/install-and-configure-nginx#2-installing-nginx Install and configure Nginx | Ubuntu Ubuntu is an open source software operating system that runs from the desktop, ..

# 배경 회사에서 Docker 업무를 하면서 로컬에서 golang 서비스를 Docker로 만드는 걸 진행했는데 잘 되지 않는 문제가 발생을 했고 시니어 분께서 Dockerfile을 봐주시면서 Multi-Stage Build라는 것을 알아보라고 하셨다. # Multi-Stage Build - Docker 이미지를 만들 때 Dockerfile을 사용하는데 이때, 이미지를 만드는 방식이 layer를 쌓는 방식이다. - multi-stage builds는 여러개의 "FROM"을 작성하여 하나의 Dockerfile에서 새로운 빌드 스테이지를 시작할 수 있게끔 한다. - 필요한 소스들만 COPY를 해서 사용함으로써 도커 이미지의 용량도 줄어드는 효과가 나타난다. # Multi-Stage Build 적용 전 - 시니..

# 배경 jenkins에서 프로젝트 빌드/배포를 하다가 모든 배포가 에러가 나면서 진행이 되지 않았다. 확인해본 결과 공간이 부족하다는 에러 메시지를 확인 # 문제 내용 jenkins docker를 올려놓은 EC2 인스턴스의 볼륨 크기가 작아서 발생한 문제 jenkins에서 빌드 할 때 모듈을 다운로드하거나 하면 CPU를 많이 차지한다고 한다 # EC2 볼륨 수정 1. 해당 EC2의 볼륨 수정을 진행해서 크기를 수정한다. 2. EC2에 직접 접근하여 이 볼륨을 적용시켜줘야한다. 1) 해당 EC2에 접근 ssh ubuntu@{EC2 IP} 2) 어떤 파티션의 크기를 조정해야 하는지 확인 $ lsblk 3) Linux 파티션 크기 조정 $ sudo growpart /dev/nvme0n1 1 4) 파티션 크기..

AWS를 작업할 때 크게 두 가지 방법으로 작업을 한다. 1) AWS Console 2) AWS CLI(Command Line Interface) 보통 대부분의 작업을 Console로 작업을 했다. 이유는 눈에 더 확실히 보이기 때문이었는데 DevOps 및 Infra 작업들이 늘어날수록 CLI를 통한 작업을 해야하는 부분들이 생겼다. 1. AWS CLI 설치하기 $ apt update $ apt-get install awscli 2. AWS CLI를 사용하기 위해서는 `aws configure` 명령어를 통해 aws 설정을 진행해야한다. AWS access key/secret access key는 IAM 사용자를 만들 때 발급된다. $ AWS ACCESS KEY : {AWS ACCESS KEY} $ AW..

1. docker 이미지 찾아보기 $ docker search mysql 2. 현재 사용 중인 버전의 mysql 이미지 다운 $ docker pull mysql:8.0.23 3. docker image 확인하기 $ docker images 4. docker 컨테이너 올리기 $ docker run -d \ -p 3306:3306 \ -e MYSQL_ROOT_PASSWORD=bstore1017my \ -v /var/lib/mysql:/var/lib/mysql \ --name mysql mysql:8.0.23 5. mysql 도커로 접속 $ docker exec -it mysql bash 6. mysql로 접속 $ mysql -u root -p

# Docker 빌드(이미지 만들기) docker build --tag {image name):tag . # 이미지 - 이미지 리스트 docker images - 이미지 삭제 docker rmi {image ID} - 컨테이너에서 사용중인 경우 컨테이너를 삭제 후 이미지 삭제 또는 강제 삭제가 가능하다. docker rmi -f {image ID} - 사용되지 않는 이미지 삭제하기 $ docker image prune -f # 컨테이너 - 실행중인 컨테이너 리스트 보기 docker ps - 전체 컨테이너 리스트 보기 docker ps -a - 컨테이너 시작 docker start {container name} - 컨테이너 중지 docker stop {container name} - 컨테이너 삭제 dock..