devops/docker

    [Docker] Dockerfile로 Docker에서 Spring boot 서버 실행

    [Docker] Dockerfile로 Docker에서 Spring boot 서버 실행

    도커에서 스프링 서버를 실행하면 유용한 점이 많다. 1. 독립적인 환경으로 서버를 배포할 수 있음 -> 컨테이너 밖에 영향을 주지 않음 2. 배포 환경에서 프로젝트 전체 코드를 가지고 있을 필요가 없다 -> .jar 파일만 갖고 있어도 서버를 실행할 수 있다. 이제부터 방법을 알아보자. Dockerfile 우선 Dockerfile을 준비하자. (파일명: Dockerfile) FROM openjdk:11 ARG JAR_FILE=*.jar COPY ${JAR_FILE} app.jar ENTRYPOINT ["java","-jar","/app.jar"] 대강 해석해보자면, 1. openjdk:11 이미지에 대해 컨테이너를 실행할 것인데 2. 현재 폴더에 대해 .jar 파일이 있다면, JAR_FILE 변수에 저장..

    [Docker] 도커 컨테이너에 깃랩(Gitlab) 설치

    [Docker] 도커 컨테이너에 깃랩(Gitlab) 설치

    Gitlab 이미지 pull docker pull gitlab/gitlab-ce:latest+) 참고 깃랩 관련 이미지는 gitlab-ce, gitlab-ee가 있는데, ce는 community, ee는 enterprise 전용이라고 한다. 나중에 깃랩을 유료 티어(Tier)로 업그레이드하려고 할 때, gitlab-ee는 깃랩을 다시 설치할 필요가 없다. 여기서는 gitlab-ce를 사용했다. [관련자료] GitLab CE vs EE | DevSecOps 구축 컨설팅, 교육, 기술지원 서비스 제공 Gitlab 컨테이너 실행 docker run docker run --detach \ --hostname gitlab.example.com \ --publish 1980:80 --publish 1922:22 -..

    [Docker] Dockerfile & build

    Dockerfile & build 사용자 정의 도커 이미지를 만드는 방법은 대표적으로 docker commit이 있다. 그러나 docker commit은 직접 컨테이너 안에서 원하는 프로그램을 설치한 후에 해당 컨테이너 상태를 그대로 이미지 형태로 복사하는 것이다. 이러한 방법은 실수할 위험도 있고, 현재 컨테이너에 어떤 프로그램들이 설치 되어 있는지 일일이 확인하기 어렵다. 따라서 사용자 정의 이미지를 만드는 방식을 파일 형태로 명세하는 방법이 있는데, 바로 Dockerfile과 build를 사용한 방식이다. 아래 예시를 보자. ex) ubuntu 20.04에서 python을 설치해 서버까지 띄우는 작업을 하고싶다고 하자. 그리고 이를 이미지로 만들고 싶다. 먼저 docker commit을 통해 이미지..

    [Docker] Docker compose

    Docker compose 만약 wordpress_net 이라는 도커 네트워크를 만들고, 이 안에 mysql 컨테이너와 wordpress 컨테이너를 생성하고 싶다면 다음과 같이 명령어를 실행해야 한다. docker network create wordpress_net docker \ run \ --name "db" \ -v "$(pwd)/db_data:/var/lib/mysql" \ -e "MYSQL_ROOT_PASSWORD=123456" \ -e "MYSQL_DATABASE=wordpress" \ -e "MYSQL_USER=wordpress_user" \ -e "MYSQL_PASSWORD=123456" \ --network wordpress_net \ mysql:5.7 docker \ run \ --na..

    [Docker] Docker commit & push

    [Docker] Docker commit & push

    Docker commit & push Docker commit을 통해 나만의 도커 이미지를 만들고 이를 docker hub에 push하는 방법을 알아보자. Docker commit 위 그림을 보면, docker hub에서 pull을 통해 image를 다운받고, run을 통해 컨테이너를 실행한다. 하나의 이미지로 여러 컨테이너를 만들 수 있고, 각각은 독립된 공간을 갖는다. 만약, ubuntu 이미지에서 run을 통해 생성된 컨테이너에서 git을 설치해서 작업하고 있을 때, ubuntu + git이 설치된 현재 컨테이너를 하나의 이미지로 만들고 싶다면 어떨까? 이 때 사용하는 기능이 바로 커밋이다. docker commit을 통해 내가 원하는 상태의 컨테이너를 하나의 이미지로 생성할 수 있다. 추가로, 생..

    [Docker] 도커 입문

    [Docker] 도커 입문

    도커 소개 어떤 애플리케이션을 만들기 위해서 여러 프로그램을 설치하고 환경에 맞게 설정하는 것은 여간 까다로운 일이 아니다. 대부분 한 번에 될 턱이 없다. 한 번에 돼도 개발자들은 왜 한 번에 되는지 의심한다… 따라서 누군가가 컴퓨터에 애플리케이션을 깔아주고 이를 제공해준다면 얼마나 편리할까? 그러나 애플리케이션 하나를 위해 여러 컴퓨터를 사야하는 것은 너무 비싸다. 그렇다면 하나의 컴퓨터에 여러 가상의 컴퓨터(OS)를 깔고, 각각에 애플리케이션에 필요한 프로그램을 설치한다면? 여러 컴퓨터를 살 필요는 없지만, 애플리케이션 하나 설치하기 위해서 용량이 큰 운영체제를 깔아야 한다는 것은 부담스럽다. 또 여러 운영체제가 있다보니까 실행속도도 느려지게 된다. 그래서 생각해낸 것이 바로 컨테이너 기술이다. 그..