계속해서 restart 상태인 컨테이너 디버깅하기
2022. 11. 10. 17:47
Docker
상황 docker-compose up -d --build 명령을 실행해 nginx 웹서버, express 서버, mysql 서버 컨테이너를 띄웠습니다. docker ps -a 명령을 실행해 현재 실행되고 있는 도커 컨테이너 목록을 체크했습니다. 체크한 결과, express 서버 컨테이너는 계속 restarting 상태인 것이 확인되었습니다. 왜 restarting 이 계속 되고 있는지 도대체 어떤 게 문제가 있는지 전혀 알지 못해 답답했습니다. restarting 상태인 컨테이너 로그는 어떻게 볼 수 있을까? 찾아보니 아래와 같이 명령을 실행하면 된다는 것을 알게 되었습니다. 같은 상황이 이후 발생했을 때 잊지 않고자 이렇게 기록을 남깁니다. 해결책 로그 확인할 도커 컨테이너 ID 확인 docker ps..
[Error] unable to start container process: exec: "bash"
2022. 11. 10. 16:45
Docker
상황 컨테이너 접속 node 컨테이너에 주입된 env 변수 목록을 확인하기 위해 node 컨테이너의 bash 창에 접근하려고 했으나, 위와 같은 오류가 발생했습니다. 해결 Docker 이미지가 Alpine 이라면 bash 를 지원하지 않을 수도 있다고 합니다. 대신 /bin/sh 로 컨테이너에 접속하면 된다고 합니다. /bin/sh 로 컨테이너에 접속 env 명령어 실행 결과 다음과 같이 node 컨테이너에 주입된 env 변수 목록을 확인하실 수 있습니다.
Docker Compose 개념과 사용하는 이유
2022. 11. 9. 21:23
Docker
Docker Compose 란? Docker Compose 란 여러 개의 컨테이너들을 관리, 실행하기 위한 "툴" 로, 각각 독립된 컨테이너의 실행을 정의합니다. Docker Compose 는 왜 필요한가? 도커 컨테이너끼리 연결을 편하게 하기 위해서 github 에서 express 서버 구성 코드를 pull 받고, 이를 컨테이너화하기 위해 다음과 같이 build 할 수 있습니다. $ docker build -t express-demo . 이제 express-demo 컨테이너를 실행하고, DB로 mysql 컨테이너를 실행해보겠습니다. express-demo 컨테이너 실행 $ docker run --name express -d -p 8080:8080 express-demo mysql 컨테이너 실행 $ do..
RUN, CMD, ENTRYPOINT 명령어 개념과 차이점
2022. 11. 9. 20:32
Docker
Dockerfile 작성 시 사용되는 명령문 중 실행과 관련된 명령어는 RUN, CMD, ENTRYPOINT 가 있습니다. RUN RUN 명령문은 쉘(shell)에서 커맨드를 실행하는 것처럼 이미지 빌드 과정에서 필요한 커맨드를 실행하기 위해 사용됩니다. 보통 이미지 안에 특정 소프트웨어를 설치하기 위해 많이 사용됩니다. FROM node:16 RUN mkdir -p /app WORKDIR /app COPY package*.json ./ # local machine 에서 npm install 실행 RUN npm install 실행 시점 : 도커 이미지 빌드 ENTRYPOINT ENTRYPOINT 명령문은 CMD 명령문과 비슷하지만, 컨테이너를 띄울 때 항상 실행되어야 하는 커맨드를 지정할 때 사용합니다...
자료구조의 구분
2022. 11. 8. 13:39
컴퓨터 과학/자료구조
자료구조는 크게 선형 자료 구조와 비선형 자료 구조로 구분할 수 있습니다. 선형 자료 구조 선형 자료 구조는 요소가 일렬로 나열되어 있는 자료 구조입니다. 선형 자료 구조로는 연결 리스트, 배열, 벡터, 스택, 큐 등이 있습니다. 비선형 자료 구조 비선형 자료 구조는 일렬로 나열하지 않고 자료 순서나 관계가 복잡한 자료 구조입니다. 비선형 자료 구조로는 그래프, 트리, 힙, 우선순위 큐, 맵, 셋, 해시 테이블 등이 있습니다. 앞으로 하나씩 공부하며 포스팅할 계획입니다. 참조 면접을 위한 CS 전공지식 노트 chapter 5 자료구조
데이터베이스 설치
2022. 11. 7. 17:26
라이브러리 & 프레임워크/Django
기본적으로는 SQLite를 사용하도록 구성되어 있습니다. SQLite는 Python에서 기본으로 제공되기 때문에 별도로 설치할 필요가 없습니다. 그러나 실제 프로젝트 시작 시에는 MySQL 같이 좀 더 확장성 있는 데이터베이스를 사용하는 것이 좋습니다. demo_project/settings.py 파일 안에 데이터베이스가 설치되어 있습니다. demo_project/settings.py DATABASES = { "default": { "ENGINE": "django.db.backends.sqlite3", "NAME": BASE_DIR / "db.sqlite3", } } 데이터베이스를 생성하기 위해서 터미널에서 아래 코드를 실행하세요. : $ python manage.py migrate
URLconf - URL 정의
2022. 11. 7. 17:07
라이브러리 & 프레임워크/Django
URLconf 란? URLconf는 Django에서 URL과 일치하는 뷰를 찾기 위한 패턴들의 집합입니다. URL : 웹페이지 주소를 의미합니다. 인터넷의 모든 페이지는 고유한 URL 을 가지고 있어야 합니다. 애플리케이션은 사용자가 URL을 입력하면 어떤 내용을 보여줘야 하는지 알고 있습니다. Django 에서 URL 은 어떻게 작동할까? demo_project/urls.py """demo_project URL Configuration [...] """ from django.contrib import admin from django.urls import path urlpatterns = [ path('admin/', admin.site.urls), ] Django는 admin/ 로 시작하는 모든 URL..
Django 개발 환경 설정
2022. 11. 7. 16:15
라이브러리 & 프레임워크/Django
Django란? 웹서비스를 쉽고 빠르게 개발할 수 있는 툴을 제공하는 파이썬 프레임워크입니다. 프레임워크 : 개발하면서 자주 사용하고 반복적으로 사용하는 도구를 모은 라이브러리의 집합 가상환경 가상환경이란? 자신이 원하는 Python 환경을 구축하기 위해 필요한 모듈만 담아놓기 위한 환경 설정입니다. 가상환경은 왜 필요한가? 우리는 프로젝트를 개발하면서 여러가지 패키지들을 설치하게 됩니다. 시간이 지나면서 패키지의 버전이 바뀌게 되는데, 예전 프로젝트에서 사용하던 버전과 달라져 충돌이 일어날 수 있습니다. 그렇기 때문에 프로젝트 별로 가상환경을 만들어 관리합니다. 가상환경에는 여러 종류가 있는데, 그 중에서도 우리는 pipenv 라는 가상환경을 사용하려고 합니다. pipenv 설치 (Windows) $ ..