아무거나

[ubuntu] springboot docker 개발/스테이지 환경 구성 본문

Infra/Docker

[ubuntu] springboot docker 개발/스테이지 환경 구성

전봉근 2019. 4. 30. 10:05
반응형

[springboot docker 개발/스테이지 배포 환경 구성]

 

컨테이너 : ubuntu14.04

웹 서버 : nginx

애플리케이션 : springboot

 

1. 컨테이너 실행

- sudo docker pull ubuntu:16.04

- sudo docker run -i -t -d -p 5001:80 --name ws_internal_api_dev -v /docker/ws_internal_api_dev/app/api:/app/api ubuntu:16.04 /bin/bash

- sudo docker exec -it ws_internal_api_dev /bin/bash

 

2. api서버 세팅(nginx+springboot)

   - sudo docker exec -it ws_internal_api_dev /bin/bash

   - apt-get install update

   - apt-get install openjdk-8-jdk;

   - export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")​

   - vi /etc/profile

     [profile]

     export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64;

   - apt-get install nginx

   - apt-get install vim

   - vi /etc/nginx/sites-available/default

     [default]

server {

listen 80 default_server;

listen [::]:80 default_server;

 

root /var/www/html;

 

# Add index.php to the list if you are using PHP

index index.html index.htm index.nginx-debian.html;

 

server_name _;

 

location / {

     proxy_pass http://localhost:8080;

     proxy_set_header X-Real-IP $remote_addr;

     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

     proxy_set_header Host $http_host;

}

 

}

    - service nginx restart

 

 

3. codedeploy로 배포한 /app/api 경로 생성

- sudo mkdir /app

- sudo mkdir /app/api

- sudo mkdir /app/api/build

- sudo mkdir /app/api/jar

- /app/api/deploy.sh 스크립트 작성  // docker 공유 폴더에 이동시키기 위한 용도

  [deploy.sh]

#!/bin/bash

 

if [ "$#" -ne 1 ];

then

echo "Bad Not Request Parameters"

else

# parameters check

if [ $1 = "dev" -o $1 = "stage" ];

then

internalApiRoot="/docker/ws_internal_api_$1/app"

 

if [ -d "$internalApiRoot/api/jar" ];

then

sudo cp -R /app/api $internalApiRoot

else

sudo cp -R /app/api $internalApiRoot

sudo mkdir $internalApiRoot/api/jar

fi

 

# deploy.sh cp

sudo rm -r $internalApiRoot/api/deploy.sh

sudo cp /app/api/deploy_springboot_docker_$1.sh $internalApiRoot/api/deploy.sh

sudo rm -r $internalApiRoot/api/deploy_springboot_docker_*

else

echo "env error !!! ex: dev, stage"

fi

fi

 

- /app/api/에 deploy_springboot_docker_dev.sh와 deploy_springboot_docker_stage.sh 생성  // docker 공유 폴더에 이동시키기 위한 용도

  [위 2개 sh파일에 대한 내용 예시]

#!/bin/bash

 

REPOSITORY=/app/api

 

echo "> 현재 구동중인 애플리케이션 pid 확인"

 

CURRENT_PID=$(pgrep -f ws_internal_api)

 

echo "$CURRENT_PID"

 

if [ -z $CURRENT_PID ]; then

echo "> 현재 구동중인 애플리케이션이 없으므로 종료하지 않습니다."

else

echo "> kill -15 $CURRENT_PID"

kill -15 $CURRENT_PID

sleep 5

fi

 

echo "> 새 어플리케이션 배포"

 

echo "> Build 파일 복사"

 

cp $REPOSITORY/build/build/libs/*.jar $REPOSITORY/jar/

JAR_NAME=$(ls $REPOSITORY/jar/ | grep 'ws_internal_api' | tail -n 1)

 

echo "> JAR Name: $JAR_NAME"

 

nohup java -jar -Dspring.profiles.active=dev $REPOSITORY/jar/$JAR_NAME &

 

- 배포가 완료되면 deploy_springboot_docker_dev.sh 를 직접 실행해 주자.. (더 좋은 방법 생각 필요)​ 

반응형

'Infra > Docker' 카테고리의 다른 글

포테이너(Portainer) 설치  (0) 2020.03.20
삭제(uninstall)  (0) 2019.06.11
mariaDB 설치 (zabbix 설치 과정 관련)  (0) 2019.05.02
Docker 실시간 모니터링툴  (0) 2019.04.30
[ubuntu] Docker 설치 및 실행  (0) 2019.04.30
Comments