최근에 오렌지파이5를 구매하고 기존에 진행했던 프로젝트를 해당 기기에 도커를 통해 배포하면서 만난 여러가지 문제점들을 기록해두고자 한다. 사실 대부분의 문제점은 도커를 오랜만에 사용하면서 기존에 만나보았던 문제점들이지만 도커를 자주 사용할 것같지 않아 미리 정리해두려 한다. 아키텍처 가장 먼저 직면했던 것은 아키텍처 문제였다. Windows 환경에서 개발한, 즉 x86_64, amd64 아키텍처 환경에서 개발하고 amd64 아키텍처에 배포하던 기존의 환경에서 arm64, aarch64 아키텍처에 배포하면서 아키텍처가 다른 문제가 발생한 것이었다. 가장 먼저 개발 환경의 아키텍처와 배포 환경의 아키텍처를 확인이 필요한데 다음 커맨드를 통해 확인할 수 있다. $ lscpu | grep Architecture..
기존의 빌드 이후 실행되던 쉘스크립트는 빌드와 실행 자체는 잘 되지만 기존에 존재하던 이미지와 컨테이너를 삭제하지 못 하고 계속해서 증식하던 문제가 발생했다. 기존 쉘스크립트는 올릴 필요가 없을 정도로 완벽하게 깔끔한 정답을 찾아서 공유한다! 쉘스크립트 cd ~/deploy docker-compose pull docker-compose up -d --remove-orphans yes | docker image prune 1. docker-compose.yml이 존재하는 폴더의 위치로 이동하고 2. 이미지를 새로 받아온다 3. 컨테이너를 재시작한다. 어디에도 연결되지 않은 컨테이너는 여기서 삭제된다. 4. yes | docker image prune은 사용되고 있지 않은 이미지를 삭제하는 과정인데 꼭 필요..
도커로 nginx를 설정해주는 방법은 크게 2가지 단계로 볼 수 있다. 1. nginx의 설정파일인 /etc/nginx/nginx.conf 수정하기 2. docker-compose.yml 작성 후 up 하기 nginx.conf 작성 /etc/nginx/nginx.conf 는 위치와 파일명이 정해져있는 값으로 디폴트로 파일이 주어지지만 크게 의미있는 내용은 존재하지 않아 아예 다른 곳에 nginx.conf 파일을 새로 작성해서 container가 올라갈때 mount해주는 것이 편하다. 마운트될 nginx.conf는 어떤 위치에 작성해도 상관없으나 docker-compose.yml과 같은 디렉토리 혹은 그 밑에 있는 것이 관리측면에서 더 편할 것이라 생각하여 deploy 내에 docker-compose.ym..
프로젝트를 얼추 완성하고나서부터 빌드, 배포에 대해서 공부를 하기 시작했다. 한번에 홈서버, 네트워크, 리눅스, 환경변수, 도커, 빌드, 배포, 젠킨스, 도커 안의 도커 등의 개념을 공부하다 보니 많은 점들이 한꺼번에 주입되어 너무 헷갈렸기에 그 헷갈렸던 점들을 정리해놓고자 한다. 관심사의 분리가 이렇게 중요하구나라는 것을 깨닫게 된 좋은 계기였다. 빌드 빌드의 주체는 Gradle, Maven, Ant와 같은 빌드툴이다. 개념적으로는 알고 있었지만 젠킨스 도커 등을 공부하면서 마치 이런 툴들이 빌드까지 대신 해주는 것처럼 느껴졌다. 젠킨스가 빌드를 해주는 것이 아닌 젠킨스의 파이프라인에 빌드 단계가 들어가 빌드툴 plugin이 빌드를 한다는 개념을 정확히 잡아야 한다. 배포 배포는 AWS나 홈서버가 하는..
본인의 상황은 다음과 같았다. Docker Desktop for Windows로 Docker 이용.(Hyper-V 등과 같은 VM이 아닌) Docker에 Jenkins를 설치했고 이 Jenkins를 통해 Git과 연결하고 훅이 날라오면 Docker에 이미지를 빌드하고 Docker hub로 이미지를 푸시하는 과정이었다. Docker 내의 Jenkins를 이용하고 Jenkins 내에서 Docker를 이용하는 과정이 핵심이니 정확하게 이해하는 것이 중요하다. 도커 설정 먼저 도커허브에서 jenkins/jenkins 이미지를 받는다. (official jenkins는 deprecated 되었다.) 그다음 GUI를 통해 이미지에서 컨테이너를 몇가지 설정과 함께 바로 실행할 수 있지만 "절대로" 바로 실행해서는 안..
도커에서 포트를 열고자 할 때는 인바운드 규칙 프로그램 규칙 두 가지를 다 열어야한다. 인바운드로 포트와 아이피를 열어주는 것뿐만이 아닌 Docker Desktop Backend.exe (프로그램)의 포트 또한 오픈해야한다. 방법은 다음과 같다. 1. 도커에서 어떤 서버든 어떤 포트튼 상관없이 본인이 원하는 포트명으로 ${호스트 포트}:${컨테이너 포트}로 매핑한다. 이는 도커 내에서의 포트 포워딩 개념이므로 맨 처음에 한 번만 잘 설정해두면 건들 일이 없고 ${호스트 포트}만 기억하면 된다. 2. 공유기에서 포트 포워딩을 설정한다. 포트 포워딩은 공유기 벤더마다 약간씩 다르지만 기본적으로 크게 다르지않다. 그리고 개념적으로 헷갈리기 쉬우므로 확실하게 분리해서 생각해야 한다. 서비스 이름 : 본인이 구별..
- Total
- Today
- Yesterday
- neovim
- 아키텍처
- vim
- JavaScript
- RequestPart
- RequestBody
- 레디스
- 배포
- 루나빔
- IDE
- lunarvim
- RequestParam
- Dap
- 도커
- ModelAttribute
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |