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 |
---|