Server

  • Docker Container

    Docker-Compose 각종 서비스 설정 정리

    docker compose로 간단한 mysql 설정 예시 mysql 환경변수 명령 의미 MYSQL_ROOT_PASSWORD 필수값. MySQL의 root 암호 지정 MYSQL_DATABASE 생성할 DATABASE 생성 MYSQL_USER MySQL 사용자 아이디 지정 MYSQL_PASSWORD MySQL 사용자 암호 지정 MYSQL_ALLOW_EMPTY_PASSWORD MySQL의 root 암호에 빈 값을 허용.빈 값 허용시 위 예시의 SQL문 등의 적용이 안됨 docker compose로 간단한 nginx 설정 예시 공통 – restart(재시작) 정책 명령 의미 “no” 어떠한 경우에도 재시작하지않음 always 항상 재시작 on-failure on-failure 에러와 함께 컨테이너가 멈추었을때만 재시작 unless-stop 개발자가 임의로 멈추려고 할 때를 제외하곤 항상 재시작

  • AWS,  Docker Container

    Docker – Multi Container와 AWS EB 설정

    Dockerrun.aws.json 파일이란? Multi Container의 경우 AWS 설정 파일이 필요한데 Dockerrun.aws.json 이 바로 해당 설정 파일입니다 필요한 이유 Single Container의 경우 하나의 컨테이너만 필요하기 때문에 Dockerfile 만으로 확인이 가능하지만 Multi Container의 경우 컨테이너 간의 실행 순서 등 자동 프로세스가 안되므로 임의 설정이 필요합니다. Dockerrun.aws.json 파일 설정 각 컨테이너에 사용할 이미지 CPU 및 메모리 지정 작업에 사용할 로깅 구성, IAM 역할 명령 의미 AWSEBDockerrunVersion 버전 번호를 멀티컨테이너 Docker 환경에 대한 값 2로 지정 containerDefinitions 컨테이너 작업 정의 영역 name 컨테이너 이름 image Docker Hub에 생성된 Repository 안의 Docker 이미지명 hostname 호스트명해당 이름을 통해 Docker Compose의 다른 컨테이너로 접근 essential 실패시 작업 중지 여부 memory 사용 메모리 지정 portMappings 컨테이너에 있는 네트워크 지점을 호스트…

  • AWS,  CI,  Docker Container

    GitHub – Travis CI 사용법 (Docker, AWS EB, IAM)

    Travis CI 란 ? Travis CI는 Github 및 Bitbucket에서 진행되는 오픈소스 프로젝트를 위한 지속적인 통합(Continuous Integration) 서비스입니다.2011년에 설립되어 2012년에 급성장하였으며 Ruby언어만 지원하였지만 현재는 대부분의 개발 언어를 지원하고 있으며 Travis CI를 이용하면 Github repository에 있는 프로젝트를 특정 이벤트에 따라 자동으로 테스트, 빌드하여 배포할 수 있습니다. * Private repository는 유료로 일정 금액을 지불하고 사용할 수 있습니다. 준비물 AWS 계정 Github 계정 Travis에 연동할 Github Repository Travis CI – Github, AWS 연동 과정 먼저 Travis 홈페이지에서 Travis CI 계정을 생성합니다. 생성 후 화면 우측 상단 내 정보 – Setting으로 이동하면 아래 화면이 나옵니다. elasticbeanstalk 생성 과정 AWS Console에서 ElasticBeanstalk 검색 – 새 환경 생성 환경 티어 선택 – 웹 서버 환경 선택 플랫폼…

  • Nginx

    Nginx – 설정 정의

    user nginx를 기동하면 master process 와 worker process, cache manager process 3개의 프로세스를 기동한다.저기서 master process 이외를 기동하는 유저를 지정하는 부분이다.master process는 root 유저로 기동하게 된다. worker_process nginx는 싱글스레드이기때문에, core 수에 맞춰서 설정 auto – 자동 설정 worker_cpu_affinity CPU 할당을 지정할 경우 worker_rlimit_nofile 프로세스당 파일 디스크립터의 제한 worker_connections 의 3~4배가 적정 수준 error_log pid linux 에서 시스템 파일디스크립터 를 알기위한 커멘드 events 블럭 worker_connections – 동시 처리 접속 수 multi_accept – 다중 접속 여부 use http 블럭 server_tokens server_tokens response header에 nginx 버전를 표시 여부 정의 보안을 위해 off 권장 include /etc/nginx/mime.types; MIME타입과 확장자의 연관성을 정의 default_type 위의 mime.type 에 확장자부터 MIME 타입을 지정할수 없을경우에, 이것으로 MINE타입이 적용된다.* 기본값은 text/plain 이다. log_format…

  • Docker Container

    Docker – Docker Compose 설정

    Docker Compose 란? 다중 컨테이너 도커 애플리케이션을 정의하고 실행하기 위한 도구 Docker Compose 파일 – docker-compose.yml YAML 이란? YAML Ain’t Markup Language의 약자 일반적으로 구성 파일 및 데이터가 저장되거나 전송되는 응용 프로그램에서 사용됨 상대적으로 이해하기 쉽고 가독성이 좋도록 디자인된 포맷 Docker Compose 파일 설정 명령 의미 image 컨테이너에서 사용하는 이미지 version docker compose 버전 services 이곳에 실행하려는 컨테이너들을 정의 build build 파일 정보 context docker 이미지를 구성하기 위한 파일과 폴더들이 있는 위치 dockerfile Dockerfile명 지정 ports 호스트에 연결할 포트 맵핑 (형식 = 로컬 포트 : 컨테이너 포트) volumes 로컬 머신에 있는 파일들 맵핑 stdin_open 기본 입력(stdin)을 연결 environment 환경 변수 mem_limit 메모리 제한 설정 network_disabled 네트워크 비활성화 여부 entrypoint 컨테이너…

  • Docker Container

    Docker – 이미지 Build

    이미지 생성 과정 Build 과정 docker 이미지 생성 build 명령어 – 디렉토리 내의 dockerfile을 찾아서 도커 클라이언트에 전달 옵션 – 설명 -t : 이미지명 지정 -f : 실행 도커 파일 지정 (사용 안하는 경우 docker 파일명은 Dockerfile 이어야 한다) DockerFile 명령어 명령 의미 추가 설명 FROM 기본 이미지가되는 이미지 지정 RUN 이미지를 빌드하기위한 명령을 지정 RUN apk add -update py-pip의 경우, 실제로는 apk add -update py-pip 부분이 실행된다. COPY 호스트에서 컨테이너에 파일을 복사한다. EXPOSE 외부에 공개하는 컨테이너 포트를 지정한다. 기본적으로 컨테이너 포트가 닫혀있다. CMD 이미지에서 컨테이너를 시작할 때 실행할 명령을 지정한다. Dockerfile에서 CMD는 1개만 지정할 수 있다. WORKDIR 이미지 안에서 어플리케이션 소스를 갖고 있을 디렉토리를 생성한다. 베이스 이미지의 파일과 중복될 경우의 충돌을…

  • Docker Container

    Docker – 컨테이너 생명주기 (+기본 명령어)

    Docker 컨테이너 생명주기 Docker 컨테이너 생명주기 명령어 정리 + ps 명령어 컨테이너 생성 및 실행 run 옵션 – 사용 예시(또는 설명) -i (interactive) -t (teminal) –name : docker명 –rm (remove) : stop시 프로세스까지 삭제 진행 -d (detach) : 결과로 container id 값만 출력 -e : -e CHOKIDAR_USEPOLLING=true (환경변수 지정) -v (volume) : -v [workdir 경로]/[참조하지 않을 파일] -v %cd%:[workdir 경로]/[참조할 파일] volume 지정 경로는 파일 권한 관련 수정이 안되므로 컨테이너에 접속하여 수정해야함 $(pwd) – Mac, %cd% – Windows -p (port) : -p 5000:8080 컨테이너 생성 (create) 컨테이너 실행 (start) 컨테이너 중지 (Stop, Kill) Stop은 받은 요청을 완료하고 종료시킵니다. Kill은 명령 즉시 중지시킵니다. 컨테이너 삭제 (rm, rmi) 실행중인 컨테이너 명령어 전달…

  • Docker Container,  Windows

    Windows, Docker – 설치 에러 해결 (wsl 2 installation is incomplete) + Vmmem 메모리 과점유 문제 해결

    Windows 10 에서 Docker 설치시 아래와 같은 에러를 발견하셨다면 WSL2(Linux용 Windows 하위 시스템) 설치를 위한 작업이 필요합니다. 작업 내용 및 결과 CMD 창을 관리자 모드로 접속하여 아래 명령어를 입력해줍니다 Linux 커널 업데이트 패키지 다운로드 x64 머신용 최신 WSL2 Linux 커널 업데이트 패키지 다운로드, 설치 WSL 2 실행을 위한 요구 사항 확인 WSL 2로 업데이트하려면 Windows 10을 실행해야 합니다. x64 시스템의 경우: 버전 1903 이상, 빌드 18362 이상 ARM64 시스템의 경우: 버전 2004 이상, 빌드 19041 이상 18362보다 낮은 빌드는 WSL 2를 지원하지 않습니다. Windows Update Assistant를 사용하여 Windows 버전을 업데이트합니다. 이제 팝업 창의 restart 버튼을 클릭해주면 완료! 😀 추가) dism.exe이 뭐지? (궁금하다면 참고 자료의 링크 확인) WSL 경로 \wsl$ Vmmem…