Docker를 활용한 Java 개발 환경 필수 소프트웨어 설치 가이드

본 문서는 Java 개발 환경 구축에 필요한 다양한 소프트웨어를 Docker 컨테이너를 사용하여 설치하는 방법을 안내합니다.

1. JDK 설치

AdoptOpenJDK 8 버전을 Docker 이미지로 설치합니다.

docker pull adoptopenjdk/openjdk8
docker run -di --name=jdk1.8 adoptopenjdk/openjdk8
docker exec -it jdk1.8 /bin/bash

2. MySQL 설치

MySQL 8.0 버전을 설치하고, 호스트의 /data/soft/mysql_home 디렉토리를 컨테이너의 /var/lib/mysql로 마운트합니다. 루트 비밀번호는 aaa123456으로 설정합니다.

docker pull mysql:8.0
mkdir -p /data/soft/mysql_home
chmod 777 /data/soft/mysql_home
docker run -itd --name=mysql-8 -p 7306:3306 -v /data/soft/mysql_home:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=aaa123456 mysql:8.0

3. Redis 설치

Redis를 설치하고, 데이터 영속성을 위해 호스트의 /data/soft/redis_home 디렉토리를 마운트합니다. sysctl.conf 파일에 vm.overcommit_memory = 1 설정을 추가하여 Redis의 메모리 오버커밋을 허용합니다.

docker pull redis
sudo mkdir -p /data/soft/redis_home/conf
sudo mkdir -p /data/soft/redis_home/data
docker run -d --name=redis -p 5379:6379 --restart always -v /data/soft/redis_home/data:/data redis
# Redis 재시작 시 데이터 유지를 위해 설정
echo "vm.overcommit_memory = 1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

4. Tomcat 설치

Tomcat 8.5.73 버전을 설치합니다. 필요에 따라 특정 버전이나 Java 환경을 지정할 수 있습니다.

docker pull tomcat:8.5.73-jre17-temurin-focal
docker run -di --name=tomcat -p 8080:8080 tomcat:8.5.73-jre17-temurin-focal
# Tomcat 컨테이너 내부 접속
docker exec -it tomcat /bin/bash

5. Nginx 설치

Nginx를 설치하고, 호스트의 /data/soft/nginx_home 디렉토리를 사용하여 설정 파일, HTML, 로그 파일을 관리합니다.

docker pull nginx
mkdir -p /data/soft/nginx_home/{conf,html,logs}
chmod 777 /data/soft/nginx_home/{conf,html,logs}

# 컨테이너에서 기본 설정 파일 복사 (필요시)
# docker cp [컨테이너_ID]:/etc/nginx /data/soft/nginx_home/conf
# docker cp [컨테이너_ID]:/usr/share/nginx/html /data/soft/nginx_home/html

# Nginx 실행 (설정 파일 마운트)
sudo docker run --name=nginx -p 80:80 --restart=always \
-v /data/soft/nginx_home/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /data/soft/nginx_home/conf/default.conf:/etc/nginx/conf.d/default.conf \
-v /data/soft/nginx_home/html:/usr/share/nginx/html \
-v /data/soft/nginx_home/logs:/var/log/nginx \
-d nginx

6. Rancher 설치

Rancher Server를 설치하고 8080 포트로 노출합니다.

docker pull rancher/server
docker run -di --name=rancher -p 8080:8080 rancher/server
# Rancher 재시작
docker restart rancher

7. ZooKeeper 설치

Wurstmeister의 ZooKeeper 이미지를 사용하여 컨테이너를 실행합니다.

docker pull wurstmeister/zookeeper
docker run -di --name=zookeeper -p 2181:2181 wurstmeister/zookeeper

8. Kafka 설치

Kafka를 설치합니다. ZooKeeper 서버 주소와 Kafka 브로커 ID, 리스너 설정을 지정해야 합니다. 방화벽 설정을 확인하세요.

docker pull wurstmeister/kafka
# 방화벽 비활성화 (필요시)
# systemctl stop firewalld

# Kafka 실행 (IP 주소는 실제 환경에 맞게 수정)
docker run -di --name=kafka -p 4327:4327 \
  -e KAFKA_HEAP_OPTS="-Xmx4G" \
  -e KAFKA_BROKER_ID=0 \
  -e KAFKA_ZOOKEEPER_CONNECT=[ZooKeeper_IP]:2181 \
  -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT:[Kafka_IP]:4327 \
  -e KAFKA_LISTENERS=PLAINTEXT:0.0.0.0:4327 \
  wurstmeister/kafka
# 방화벽 활성화 (필요시)
# systemctl start firewalld

9. MongoDB 설치

MongoDB 6.0.2 버전을 설치하고, 루트 사용자(admin/aaa123456)를 설정하며, 데이터 디렉토리를 마운트합니다.

docker pull mongo:6.0.2
mkdir -p /data/soft/mongo_home/db

docker run -di --name mongodb --restart always -v /data/soft/mongo_home/db:/data/db -p 7303:27017 -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=aaa123456 --privileged=true mongo:6.0.2 --auth
# 특정 데이터베이스에 대한 사용자 권한 설정 예시
# docker exec -it mongodb mongo admin --username admin --password aaa123456
# db.createUser({ user: "app_user", pwd: "app_password", roles: [ { role: "readWrite", db: "your_database" } ] })

10. Jenkins 설치

Jenkins 2.222.3-centos 이미지를 설치하고, /data/soft/jenkins_home 디렉토리를 볼륨으로 마운트합니다.

docker pull jenkins/jenkins:2.222.3-centos
mkdir -p /data/soft/jenkins_home
chmod 777 /data/soft/jenkins_home
chown -R 1000:1000 /data/soft/jenkins_home/
docker run -d --name=jenkins -p 18080:8080 -p 50000:50000 -v /data/soft/jenkins_home:/var/jenkins_home jenkins/jenkins:2.222.3-centos
# 초기 관리자 비밀번호 확인
cat /data/soft/jenkins_home/secrets/initialAdminPassword

11. ZENTAO 설치

Zentao 오픈소스 버전 16.3을 설치합니다. MySQL 데이터 디렉토리도 함께 마운트합니다.

docker pull easysoft/zentao:16.3
mkdir -p /data/soft/zentao_home
chmod 777 /data/soft/zentao_home
mkdir -p /data/soft/zentao_home/zentao_mysql
chmod 777 /data/soft/zentao_home/zentao_mysql

sudo docker run --name=zentao -p 28080:80 \
  -v /data/soft/zentao_home:/www/zentaopms \
  -v /data/soft/zentao_home/zentao_mysql:/var/lib/mysql \
  -e MYSQL_ROOT_PASSWORD=aaa123456 \
  -d easysoft/zentao:16.3
# Zentao DB 접속 정보: IP: 172.17.0.1, User: root, Password: aaa123456

12. GitLab 설치

GitLab CE 14.7.3 버전을 설치합니다. 설정, 데이터, 로그 디렉토리를 마운트하며, 최소 2GB 이상의 메모리가 필요합니다.

docker pull gitlab/gitlab-ce:14.7.3-ce.0
mkdir -p /data/soft/gitlab_home/{etc,data,log}
chmod -R 777 /data/soft/gitlab_home

sudo docker run --name=gitlab -p 38080:80 --privileged=true \
  -v /data/soft/gitlab_home/etc:/etc/gitlab \
  -v /data/soft/gitlab_home/data:/var/opt/gitlab \
  -v /data/soft/gitlab_home/log:/var/log/gitlab \
  -d gitlab/gitlab-ce:14.7.3-ce.0

# GitLab 설정 파일 수정 (외부 URL 등)
# vi /data/soft/gitlab_home/etc/gitlab.rb

# 초기 관리자 비밀번호 확인 (관리자 계정: root)
cat /data/soft/gitlab_home/etc/initial_root_password

13. Gitblit 설치

Gitblit 설치 방법은 별도의 설정이 필요할 수 있습니다. Docker Hub에서 이미지를 검색하거나 공식 문서를 참조하세요.

14. Nexus (Maven Repository) 설치

Nexus 3.37.1 버전을 설치하고, 데이터 디렉토리를 마운트합니다. 최소 2GB 이상의 메모리가 필요합니다.

docker pull sonatype/nexus3:3.37.1
mkdir -p /data/soft/nexus_home
chmod 777 /data/soft/nexus_home

docker run -d --name nexus3 -p 8081:8081 -v /data/soft/nexus_home:/nexus-data sonatype/nexus3:3.37.1
# Nexus 초기 비밀번호 확인 (계정: admin)
# 비밀번호는 /data/soft/nexus_home/admin.password 파일에서 확인 가능

15. Dameng Database 설치

Dameng DM8 데이터베이스를 Docker로 설치합니다. 초기에는 컨테이너를 실행하고, 추후 설정을 마운트하는 방식으로 진행할 수 있습니다.

# Docker 이미지 다운로드 및 임포트
wget -O dm8_docker.tar -c https://download.dameng.com/eco/dm8/dm8_docker.tar
docker import dm8_docker.tar dm8:1.0

# 초기 컨테이너 실행
docker run -itd -p 5236:5236 --name dm8 dm8:1.0 /bin/bash /startDm.sh
# 기본 계정/비밀번호: SYSDBA/SYSDBA

# 데이터 디렉토리 마운트 설정 (추후 컨테이너 삭제 후 재실행 필요)
# mkdir -p /data/soft/dm8_home
# docker cp [컨테이너_ID]:/dm8/data /data/soft/dm8_home
# docker stop dm8
# docker rm dm8
# docker run -itd -p 5236:5236 --name dm8 -v /data/soft/dm8_home/data:/dm8/data -d dm8:1.0 /bin/bash /startDm.sh

16. Nacos 설치

Nacos 2.1.2 버전을 설치합니다. Standalone 모드로 실행하며, MySQL 8.0+와 호환성 문제가 있을 수 있으므로 주의가 필요합니다.

docker pull nacos/nacos-server:v2.1.2
mkdir -p /data/soft/nacos_home/resources
chmod 777 /data/soft/nacos_home/resources

# 설정 파일 마이그레이션을 위해 임시 컨테이너 실행
docker run -di -p 7307:8848 nacos/nacos-server:v2.1.2
# 설정 파일 복사
# docker cp [컨테이너_ID]:/home/nacos/conf/application.properties /data/soft/nacos_home/resources

# 임시 컨테이너 중지 및 삭제
# docker stop [컨테이너_ID]
# docker rm [컨테이너_ID]

# 설정 파일을 마운트하여 Nacos 실행
docker run \
  --name nacos -d \
  -p 7307:8848 \
  --privileged=true \
  --restart=always \
  -e JVM_XMS=256m \
  -e JVM_XMX=256m \
  -e MODE=standalone \
  -e PREFER_HOST_MODE=hostname \
  -v /data/soft/nacos_home/resources/application.properties:/home/nacos/conf/application.properties \
  nacos/nacos-server:v2.1.2

17. JAR 프로그램 실행

JDK 컨테이너를 기반으로 JAR 파일을 실행합니다. 호스트의 디렉토리를 컨테이너에 마운트하여 애플리케이션 파일 및 로그를 관리합니다.

# 예시: collector-service.jar 실행
docker run -d --network=bridge -p 6357:6357 --restart=no --name=collector-service \
  -v /data/webapps/:/data/webapps/ \
  -v /data/files:/data/files \
  -v /data/logs:/data/logs \
  adoptopenjdk/openjdk8 java -jar -Duser.timezone=GMT+08 /data/webapps/collector-service-0.0.1-SNAPSHOT.jar

# 로그 확인
docker logs --tail=1000 collector-service

주의사항:

  • Docker 컨테이너 내에서 127.0.0.1 또는 localhost 대신 172.17.0.1 (Docker 기본 브릿지 IP) 또는 해당 컨테이너의 IP를 사용해야 합니다.
  • 포트 매핑은 [호스트 포트]:[컨테이너 포트] 형식입니다. (예: 3307:3306)
  • 경로 매핑은 [호스트 경로]:[컨테이너 경로] 형식입니다. (예: /data/soft/mysql_home:/var/lib/mysql)

Docker Hub (https://hub.docker.com/)에서 다양한 소프트웨어의 Docker 이미지를 검색할 수 있습니다.

태그: docker java JDK MySQL Redis

7월 23일 22:00에 게시됨