docker로 개발환경을 구축한다.
필요한 스펙: ubuntu 18.04
, openjdk-17
, mariadb
, mongodb
1. docker 및 docker-compose 설치
(참고: ubuntu18.04에 docker 설치방법)
docker-compose 설치 명령어
$ sudo curl -L "https://github.com/docker/compose/releases/download/v2.2.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/bin/docker-compose $ sudo chmod +x /usr/local/bin/docker-compose $ docker-compose --version Docker Compose version v2.2.3

2. spring app 이미지를 생성할 Dockerfile
dockerHub에서 openjdk17 설치되어있는거 가져오려 했으나, oracle Linux, centOS 만 있고 ubuntu를 베이스로 한 이미지가 없었다.
그래서 Dockerfile로 후딱 만들어보려 한다.
스펙사항: ubuntu 18.04
, openjdk-17
작성한 dockerfile (참고: ubuntu에 openjdk17 설치방법 )
FROM ubuntu:18.04 RUN apt-get update -y RUN apt-get install -y ca-certificates-java RUN apt-get install -y openjdk-17-jdk openjdk-17-jre RUN apt-get update -y && apt-get upgrade -y CMD ["echo hello"]
docker build 하려니 docker image 받을 때 권한 문제가 발생했다. /var/run/docker.sock 접근에 권한이 필요하다고 한다.

root 권한은 권장사항이 아니니, 다음 명령어로 user를 docker group에 포함시키고 재부팅한다.
~$ sudo usermod -a -G docker $USER
내 경우, window에서 wsl2 환경으로 ubuntu를 사용하고 있기에 window powershell 관리자 권한으로 실행한 후 다음 명령어를 실행한다.
# wsl 종료 ~$ wsl --shutdown # wsl 재시작 ~$ Get-Service LxssManager | Restart-Service

다시 docker build 를 진행하면 다음과 같이 잘 된다.

완성된 docker image 확인

docker run 해서 java 버전 확인

3. db 연동을 위한 docker-compose 도입
spring app, mariadb, mongo 이미지로부터 컨테이너를 생성하고 같은 network를 사용하도록 지정해준다.
- docker-compose.yml 예시
services: springapp: image: jdk17:latest container_name: spring ports: - 8080:8080 # build: "./app-server" # container_name: "nodeapp" # working_dir: "/usr/src/app" volumes: - "$PWD/app-server/src:/usr/src/app" depends_on: - mariadb - mongodb mariadb: image: mariadb:latest container_name: mariadb volumes: - ./db/mariadb/conf.d:/etc/mysql/conf.d - ./db/mariadb/data:/var/lib/mysql ports: - 3306:3306 environment: TZ: Asia/Seoul environment: - MYSQL_ROOT_PASSWORD=1234 networks: - docker restart: always mongodb: image: mongo:latest container_name: mongodb volumes: - ./db/mongodb:/data/db ports: - 27017:27017 networks: - docker environment: - MONGO_INITDB_ROOT_USERNAME=root - MONGO_INITDB_ROOT_PASSWORD=1234 - MONGO_INITDB_DATABASE=mydb restart: always networks: docker: driver: bridge
$ docker-compose up -d
'develop > toy project' 카테고리의 다른 글
[인스타그램 클론] 2. 프로젝트 생성 및 DB 연동 (0) | 2022.06.11 |
---|