Docker 13

Docker slim 이미지

docker 이미지 docker 이미지는 용량 최적화를 위해 컨테이너 실행에 필요한 최소한의 파일만 들어있는 slim 이미지를 지원하고 있다 용량이 작은 이미지를 사용할 때는 외부 패키지를 설치할 때 필요한 의존성 파일들이 존재하지 않아 에러가 발생할 수 있음 slim 이미지의 종류와 특징 기본 python 이미지 python alpine 이미지(가장 작은 용량) docker hub 이미지 페이지의 tags에서 확인 가능 이미지의 태그별 특징 buster, jessie, stretch debian에서 만든 linux를 기반으로 만들어진 이미지 buster, jessie, stretch는 os의 codename python:3.8과 python:3.8-buster는 동일함 (약 300~350mb) slim..

Docker 2023.06.02

Docker env 정보 관리

데이터베이스 계정 정보 등 중요한 정보들을 env파일로 관리하는 방법 .env DEBUG=1 POSTGRES_DB=django POSTGRES_USER=user POSTGRES_PASSWORD=P@ssw0rd POSTGRES_HOST=postgres POSTGRES_PORT=5432 docker-compose.yml version: '3.8' volumes: postgres: {} django_media: {} django_static: {} services: postgres: container_name: postgres image: postgres:14.5 # 만약 .env 파일을 다른 이름으로 사용할 경우 env_file 옵션을 사용해 불러올 수 있습니다. # env_file: # - prod.env..

Docker 2023.06.01

Django nginx 웹서버 컨테이너 생성

사용자들이 외부에서 접근하도록 설정하는 방법 nginx란? nginx는 클라이언트의 request 요청을 처리해주는 웹 서버(web server) reverse proxy, 로드밸런싱, 캐싱 등의 기능을 지원 클라이언트의 요청을 nginx가 받은 후 service(django) 데이터를 넘겨주는 역할 로드밸런싱을 활용해 트래픽을 분산 SSL 기능으로 데이터를 안전하게 전달 reverse proxy 기능을 통해 client에서 서버에 직접적으로 접근하는 것을 막아줌 콘텐츠를 캐싱하여 동일한 요청을 더 빠른 속도로 처리 docker-compose.yml version: '3.8' services: nginx: container_name : nginx image: nginx:1.23.2 ports: - "80..

Docker 2023.06.01

Docker gunicorn django 프로젝트 컨테이너 생성

기본적으로 runserver는 배포용이 아닌 개발용으로 사용되는 명령어 django 프로젝트를 배포할 때 runserver가 아닌 gunicorn과 같은 서비스를 활용해 배포함 runserver는 기본적으로 싱글 스레드에서 동작하지만, gunicorn은 멀티 스레드로 동작하도록 설정할 수 있기 때문에 많은 요청을 더 효율적으로 처리할 수 있음 이외에도 runserver에 비해 속도, 안정성 등 다양한 장점을 가지고 있기 때문에 배포 환경에서는 gunicorn을 사용하는 것을 권장함 gunicorn이란? 사용자의 요청을 받아 django에 작성한 코드를 실행시켜 주도록 하는 역할 배포용으로 사용되는 runserver git clone으로 소스코드 다운받기 django 프로젝트 배포하기 전 설정 settin..

Docker 2023.06.01

Docker postgresql 컨테이너 생성

docker를 사용해 django에서 사용될 postgresql 컨테이너를 생성하는 방법 작업 파일 정리하기 mkdir backup : 백업 디렉토리 생성 sudo mv ./* ./backup/ : 모든 파일 이동 sudo rm -rf ./* : 모든 파일과 디렉토리 삭제 sudo docker rm -f {container ID} : 컨테이너 삭제 sudo docker system prune -a : Docker에서 사용하지 않는 리소스를 정리하는 명령어 postgresql이란? 오픈 소스 데이터베이스 Oracle DB, MySQL 등 상용 라이센스를 가지고 있는 데이터베이스와 다르게 무료로 사용 가능 Oracle DB, Mysql, Microsoft SQL에 이어 네번째로 사용량이 많은 데이터베이스 장..

Docker 2023.06.01

docker-compose.yml 두 개 이상의 컨테이너 생성하기

컨테이너 개수에 따라 docker-compose.yml을 작성하는 방법은 기존과 크게 다르지 않다 ports, 서비스 이름 등 중복되면 안 되는 옵션이 존재하기 때문에 중복되는 값이 있는지 확인해야 함 만약 특정 값이 중복되어 들어간다면 컨테이너가 정상적으로 생성되지 않거나 생성하는 과정에서 에러가 발생할 수 있음 docker-compose.yml version: '3.8' services: example1: container_name: example1 image: 'httpd:latest' ports: - 80:80 restart: always example2: # 서비스 이름이 동일하면 컨테이너가 정상적으로 생성되지 않을 수 있습니다. container_name: example2 # 컨테이너 이름이 ..

Docker 2023.06.01

Docker entrypoint

entrypoint를 활용해 컨테이너가 생성될 때 실행할 명령어를 지정하는 방법 entrypoint란? docker 컨테이너가 생성될 때 기본적으로 실행 할 명령어를 지정해 주는 옵션 entrypoint는 Dockerfile과 docker-compose.yml 모두 작성할 수 있다 만약 Dockerfile, docker-compose.yml 모두 entrypoint가 작성되어 있다면 Dockerfile의 entrypoint는 무시되고 docker-compose.yml의 명령어가 우선적으로 수행된다 Dockerfile FROM python:3.9.15 # .pyc 파일을 생성하지 않도록 설정합니다. ENV PYTHONDONTWRITEBYTECODE 1 # 파이썬 로그가 버퍼링 없이 즉각적으로 출력하도록 설..

Docker 2023.06.01

Dockerfile 이미지 빌드하기

Dockerfile이란? docker 의 이미지를 직접 생성하기 위한 용도로 작성하는 파일 기본이 되는 이미지를 지정한 후, 특정 패키지를 설치하거나 파일을 추가하는 등의 작업을 통해 사용자가 직접 이미지를 빌드하고 사용 가능 Dockerfile 작성하기 # 빌드할 때 사용할 이미지를 지정해줍니다. FROM httpd:latest # 현재 경로에 존재하는 index.html 파일을 컨테이너 내부로 복사합니다. COPY ./index.html /usr/local/apache2/htdocs/index.html Dockerfile에서 자주 사용되는 문법 # 빌드할 때 사용할 이미지를 지정 FROM httpd:latest # 지정한 명령어 실행 RUN mkdir /app/ # docker 이미지에서 사용될 기본..

Docker 2023.06.01

Docker volume

docker 컨테이너는 컨테이너가 종료될 때 변경된 데이터는 모두 초기화 됨 volume 옵션을 사용해 데이터를 보존시키는 방법을 알아보자 volume을 사용하지 않으면? docker container 내부로 접근해서 테스트용으로 띄운 컨테이너에 접속했을 때 보여지는 문구를 변경해보기 컨테이너 접속 sudo docker exec -it example /bin/bash >> docker container에 접속할 때 container id 대신 container name을 사용할 수도 있다 echo "test" /usr/local/apache2/htdocs/index.html exit 명령어로 컨테이너에서 나간 후 $ sudo docker compose down $ sudo docker compose up..

Docker 2023.06.01

Docker compose, port forwarding

docker-compose란? docker-compose는 2개 이상의 컨테이너를 더욱 간편하게 관리하기 위해 사용되는 툴 docker-compose.yml (혹은 .yaml)이라는 파일에 컨테이너에서 사용 될 이미지, 옵션 등을 작성한 후 사용 docker 명령어만 사용할 때보다 여러 컨테이너를 더 간편하고 직관적으로 관리 docker-compose 설치하기 sudo mkdir -p /usr/lib/docker/cli-plugins >> /usr/lib/docker 경로에 cli-plugins라는 디렉토리를 생성 >> -p : 만약 상위 디렉토리가 없다면 함께 생성 sudo curl -SL https://github.com/docker/compose/releases/download/v2.11.2/doc..

Docker 2023.05.31