본문 바로가기

Back-End/Docker

(15)
SpringBoot, MySQL, Redis 컨테이너 동시에 띄우기 저번 SpringBoot와 MySQL 동시에 연결하기에서 이어지는 상태입니다.1. Spring Boot 프로젝트에 Redis 연결 코드 추가하기# build.gradle...dependencies { ... implementation 'org.springframework.boot:spring-boot-starter-data-redis'}# application.ymlspring: datasource: url: jdbc:mysql://my-db:3306/mydb username: root password: pwd1234 driver-class-name: com.mysql.cj.jdbc.Driver data: redis: host: localhost port:..
Spring Boot, MySQL 컨테이너 동시에 띄워보기(feat. 오류) [Spring Boot, MySQL 컨테이너 동시에 띄어보기]1. Spring Boot 프로젝트 세팅2. 간단한 코드 작성 또는 이미 만들어진 프로젝트3. application.yml에 DB를 연결을 위한 정보 작성하기# applicatiom.ymlspring: datasource: url: jdbc:mysql://localhost:3306/mydb username: root password: pwd1234 driver-class-name: com.mysql.cj.jdbc.Driver4. Dockerfile 작성하기# DockerfileFROM openjdk:17-jdkCOPY build/libs/*SNAPSHOT.jar /app.jarENTRYPOINT ["java", "-jar..
Docker Compose로 Redis, SpringBoot 각각 실행시키기 Redis[Docker CLI로 컨테이너를 실행 시킬 때]$docker run -d -p 6379:6379 redis[Docker Compose로 컨테이너를 실행시킬 때]1. compose.yml 파일 작성하기services: my-cache-server: image: redis ports: - 6379:63792. compose 파일 실행시키기$ docker compose up -d3. compose 실행 현황 보기$ docker compose ps$ docker ps4. 컨테이너 실행시킬 때 에러 없이 잘 실행됐는지 로그 체크$ docker logs [컨테이너 ID 또는 컨테이너 명]5. Redis 컨테이너에 접속$ docker exec -it [컨테이너 ID 또는 컨테이너명] ..
Docker Compose와 Compose CLI 명령어 Docker를 사용하는 이유[Docker Compose 란?]여러 개의 Docker 컨테이너들을 하나의 서비스로 정의하고 구성해 하나의 묶음으로 관리할 수 있게 도와주는 툴이다.[Docker Compose를 사용하는 이유]1. 여러 개의 컨테이너를 관리하는데 용이여러 개의 컨테이너로 이루어진 복잡한 애플리케이션을 한번에 관리할 수 있게 해준다. 여러 컨테이너를 하나의 환경에서 실행하고 관리하는데 도움이 된다.2. 복잡한 명령어로 실행시키던 걸 간소화 시킬 수 있음이전에 MySQL 이미지를 컨테이너로 실행시킬 때 아래와 같은 명령어로 실행을 시켰다.$ docker run -e MYSQL_ROOT_PASSWORD=password123 -p 3306:3306 -v /Users/.../mysql_data:/va..
DOCKER RUN과 WORKDIR [RUN : 이미지를 생성하는 과정에서 사용할 명령문 실행]RUN은 이미지 생성 과정에서 명령어를 실행시켜야할 때 사용한다.# 문법RUN [명령문]# 예시RUN npm instal[RUN vs ENTRYPOINT]얼핏 보면 두 개의 명령어는 비슷한 역할을 하는 것 같아서 헷갈리 때가 있다. 하지만 엄연히 둘의 사용 용도는 다르다.RUN 은 이미지 생성 과정에서 필요한 명령어를 실행 시킬 때 사용하고ENTRYPOINT 는 생성된 이미지 기반으로 컨테이너를 생성한 직후에 명령어를 실행시킬 때 사용한다.[예제]미니 컴퓨터 환경이 jdk로 구성되었으면 좋겠고 git이 깔려있으면 좋겠다고 가정하자.1. Dockerfile 작성하기# 1. JDK 17 이미지를 베이스로 사용FROM openjdk:17-jdk# 2...
Spring Boot 프로젝트를 Docker로 실행시키기 1. Spring 프로젝트 셋팅2. Dockerfile 작성하기FROM openjdk:17-jdkCOPY build/libs/*SNAPSHOT.jar app.jarENTRYPOINT ["java", "-jar", "/app.jar"]3. Spring Boot 프로젝트 빌드하기$ ./gradlew clean build4. Dockerfile을 바탕으로 이미지 빌드하기$ docker build -t hello-spring .5. 이미지가 잘 생성됐는지 확인하기$ docker image ls6. 생성한 이미지를 컨테이너로 실행시켜보기$ docker run -d -p 8080:8080 hello-spring7. 컨테이너 잘 실행되고 있는지 확인하기$ docker ps8. localhost:8080 으로 들어가보..
Docker 파일(폴더) 복사/이동 [COPY : 파일 복사(이동)]COPY는 호스트 컴퓨터에 있는 파일을 복사해서 컨테이너로 전달한다.# 문법COPY [호스트 컴퓨터에 있는 복사할 파일의 경로] [컨테이너에서 파일이 위치할 경로# 예시COPY app.txt /app.txt[파일 복사해보기]1. host.txt 만들기 (host.txt 파일 안에는 "host 입니다" 라는 메시지가 담겨짐)2. Dockerfile 만들어서 이미지 생성 및 컨테이너 실행FROM ubuntuCOPY host.txt /container.txtENTRYPOINT ["/bin/bash", "-c", "sleep 500"]$ docker build -t my-server .$ docker run -d my-server$ docker exec -it [Container..
Dockerfile을 활용해 이미지 직접 만들기 Dockerfile이란?Docker 이미지는 Dockerhub을 통해 다운받아서 사용할 수 있다. 이 Docker 이미지들도 누군가 만들어서 Dockerhub에 올려놓은 것이다. 이 Docker 이미지는 어떻게 만들까"바로 Dockerfile 이라는 것을 활용해서 Docker 이미지를 만들 수 있다"Dockerhub에 올려놓은 이미지가 아닌 나만의 Docker 이미지를 만들 수 있다. 내가 만든 SpringBoot 프로젝트 자체를 Docker 이미지로 만들고 싶을 때는 Dockerfile을 활용하면 나만의 Docker 이미지를 만들 수 있게된다.FROM : 베이스 이미지 생성[의미]FROM 은 베이스 이미지를 생성하는 역할을 한다. Docker 컨테이너를 특정 초기 이미지를 기반으로 추가적인 세팅을 할 ..