'전체 글'에 해당되는 글 73건

docker rabbitmq 설치

Docker 2021. 1. 15. 17:20

최신버전 : 3.8.9-managemen-alpine 설치 ( management가 포함된 버전으로 설치)

[root@localhost /home/rabbitmq]# docker pull rabbitmq:3.8.9-management-alpine
3.8.9-management-alpine: Pulling from library/rabbitmq
801bfaa63ef2: Already exists
5264cbe410b7: Pull complete
f743b4e2cb09: Pull complete
a61458a60935: Pull complete
7ae80d693f5f: Pull complete
45757fe42d4f: Pull complete
abdbac414bcd: Pull complete
f2babd5cc606: Pull complete
73954fbfba96: Pull complete
2e2fede618a7: Pull complete
daa111566ce1: Pull complete
Digest: sha256:0ac9a7f792aa031dff1d133b2d5febfe01a63a9f8aa0d5a9357467e0b8d75a67
Status: Downloaded newer image for rabbitmq:3.8.9-management-alpine
docker.io/library/rabbitmq:3.8.9-management-alpine

 

shell script

docker container stop rabbitmq
docker container rm rabbitmq
docker run --name rabbitmq  --hostname fourfree -d -e TZ=Asia/Seoul -it \
    -p 15672:15672 \
    -p 5672:5672 \
    -v /home/rabbitmq/data:/var/lib/rabbitmq/ \
    -v /home/rabbitmq/logs:/var/log/rabbitmq/ \
    -e RABBITMQ_DEFAULT_USER=admin \
    -e RABBITMQ_DEFAULT_PASS=[your password] \
    rabbitmq:3.8.9-management-alpine \

 

[참고]

iptables를 리눅스에서 이용하고 있다면 기본포트인 15672를 추가해야 하지만

docker는 실서비스가 되고 있는상황에서 포트를 추가하면 오류가 발생함

 

rabiitmq에 접속할 수 있는 도메인을 할당하고 nginx에서 80 -> 15672로 맵핑함

 

ProtocolBound toPort

amqp :: 5672
clustering :: 25672
http :: 15672
http/prometheus :: 15692

amqp 사용하려면 5672 오픈해야함 <-- iptables에서 포트 오픈

 

 

[기본 로그인 아이디/비번] guest/guest -> 쉘스크립트에서 default user, pass 설정 한걸로 로그인 할 수 있음

 로그인화면

반응형

'Docker' 카테고리의 다른 글

centos7 docker-compose 설치하기  (0) 2021.02.05
golang , oracle , Dockerfile 환경 만들기  (0) 2021.01.20
docker , redis설치  (0) 2021.01.14
docker 실행 자동화  (0) 2020.12.11
도커허브에서 빌드된 이미지 다운로드  (0) 2020.12.11
블로그 이미지

visualp

c#, java

,

1. 필수 defendency

 <dependency>
 	<groupId>org.springframework.boot</groupId>
 	<artifactId>spring-boot-starter-data-redis</artifactId>
 </dependency>
       
 <!-- redis -->
 <dependency>
   <groupId>org.springframework.session</groupId>
   <artifactId>spring-session-data-redis</artifactId>
 </dependency>

2. configuration

@Configuration
public class RedisConfig {
    
    @Value("${spring.redis.host}")
    private String host;
    
    @Value("${spring.redis.port}")
    private int port;

    @Value("${spring.redis.password}")
    private String password;

    @Value("${spring.redis.database}")
    private int database;
	
    @Bean
    public RedisConnectionFactory redisConnectionFactory() {
        RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration();
        redisStandaloneConfiguration.setHostName(host);
        redisStandaloneConfiguration.setPort(port);
        redisStandaloneConfiguration.setPassword(password);
        redisStandaloneConfiguration.setDatabase(database);
        LettuceConnectionFactory lettuceConnectionFactory = new LettuceConnectionFactory(redisStandaloneConfiguration);
        return lettuceConnectionFactory;
    }

    @Bean
    public RedisTemplate<String, Object> redisTemplate() {
        RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
        template.setConnectionFactory(redisConnectionFactory());
        template.setKeySerializer(new StringRedisSerializer());
        /**
         * 2017-11-15 (고병만)수정
         * 필수처리 key StringRedisSerializer 처리를 해줘야 key앞에 이상한 특수 문자들이 임의로 붙는 상황을
         * 막을 수 있음 ex)\xAC\xED\x00\x05t\x00\x12
         */
        template.setKeySerializer(new StringRedisSerializer());
        return template;
    }
}

 

3. spring에서session 사용방법 다음만 지키자

아래의 코드처럼 session에서 데이터를 가져와서 데이터 가공작업 후 -> 다른 페이지로 redirect하는 상황이 발생한다면

반드시 데이터 가공후 session.setAttribute 해줘야함

당연한거라 생각 할 수 있지만. 일반httpsession같은경우 setAttribute 하지 않더라도 데이터가 유지됩.

 

SinJepmSSVO ss_sinJepmSSVO = request.getSession().getAttribute("ss_sinJepmSSVO") != null ? (SinJepmSSVO) request.getSession().getAttribute("ss_sinJepmSSVO") : null;
        List<CycleDataCompareVO> cycleDataCompareVOS = jmngService.compare_cycle(ss_sinJepmSSVO,sinJepmSSVO);
 //session save
  request.getSession().setAttribute("ss_cycleDataCompareVOS",cycleDataCompareVOS);

 

4. 반드시 vo , dto 등 session에 담을 데이터는 implements Serializable 해야함.

@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
@Builder
public class TermVO implements Serializable {
    //년도
    private String year;

    //텀
    private String term;

    //텀 - 시작일자
    private String stdate;
    //텀 - 종료일자
    private String eddate;

    //텀코드
    private String termcode;

    public String getTermcode() {
        return year + "-" + (Integer.parseInt(term) < 10 ? "0"+term : term);
    }
}

 

5. redist는 프로젝트 초기에 세팅해서 작업을 하는게 좋을듯 . 중간에 끼어넣으려니 그동안 작업했던 vo , session 처리하는 부분들 변경해줘야 되는 귀찮은 일들이 생김.

 

반응형
블로그 이미지

visualp

c#, java

,

docker , redis설치

Docker 2021. 1. 14. 11:02

현제가장 최신 버전인 6.0.10 alpine 기반으로 설치한다.

[버전들 참고]

hub.docker.com/_/redis

docker pull redis:6.0.10-alpine

6.0.10-alpine: Pulling from library/redis
801bfaa63ef2: Pull complete
9a8d0188e481: Pull complete
8a3f5c4e0176: Pull complete
3f7cb00af226: Pull complete
e421f2f8acb5: Pull complete
f41cc3c7c3e4: Pull complete
Digest: sha256:2cd821f730b90a197816252972c2472e3d1fad3c42f052580bc958d3ad641f96
Status: Downloaded newer image for redis:6.0.10-alpine
docker.io/library/redis:6.0.10-alpine

 

redis 환경설정파일 만들기

6.x기준 설정파일

 

아래 설정파일을 참고하면됩니다.

우선 기본적으로 설정해야 될 부분이

requirepass youerpassword <-- 비밀번호 설정 부분

daemonize yes (no->yes)로변경

기본 포트는 6379를 사용한다

설정파일을 참고 하기 바람

raw.githubusercontent.com/redis/redis/6.0/redis.conf

//[한글]설명

redisgate.kr/redis/server/redis_conf_han.php

원하는 위치에 redis.conf라고 설정파일을 생성한다.

 

docker실행 shell script

[root@localhost /home/redis]# vi redis.sh
docker container stop redis
docker container rm redis
docker run --name redis -d -e TZ=Asia/Seoul -it -p 6379:6379 -v /home/redis/conf/redis.conf:/usr/local/redis/redis.conf redis:6.0.10-alpine redis-server /usr/local/redis/redis.conf

 

반드시 iptables에 6379 포트는 오픈되어 있어야 합니다.

반응형

'Docker' 카테고리의 다른 글

golang , oracle , Dockerfile 환경 만들기  (0) 2021.01.20
docker rabbitmq 설치  (0) 2021.01.15
docker 실행 자동화  (0) 2020.12.11
도커허브에서 빌드된 이미지 다운로드  (0) 2020.12.11
도커허브 로그인  (0) 2020.12.11
블로그 이미지

visualp

c#, java

,

3. dockerhub webooks

dwm 2021. 1. 7. 15:24

도커허브에서 maven build 후 dwm으로 완료 메시지를 보냄니다.

 

 

반응형

'dwm' 카테고리의 다른 글

2.배포현황  (0) 2021.01.07
1-프로젝트 관리  (0) 2021.01.07
배포환경 개발하기 -개요  (0) 2021.01.07
블로그 이미지

visualp

c#, java

,

2.배포현황

dwm 2021. 1. 7. 15:23

실서버에 배포완료 후 결과

로그와 함께 제공됩니다.

 

 

반응형

'dwm' 카테고리의 다른 글

3. dockerhub webooks  (0) 2021.01.07
1-프로젝트 관리  (0) 2021.01.07
배포환경 개발하기 -개요  (0) 2021.01.07
블로그 이미지

visualp

c#, java

,

1-프로젝트 관리

dwm 2021. 1. 7. 15:21

최대한 간단하게 

서버 원격지 주소,로그인 아이디, 패스워드 , 실행할 script 등록합니다.

 

반응형

'dwm' 카테고리의 다른 글

3. dockerhub webooks  (0) 2021.01.07
2.배포현황  (0) 2021.01.07
배포환경 개발하기 -개요  (0) 2021.01.07
블로그 이미지

visualp

c#, java

,

[배경]

서버내에서 ninx기반으로 A,B로 나눠서

무중단  배포해야되는 상황

 

[1차]목표

최대한 간단하게 배포하기 위해서 아래와 같은 순서로 배포가 되도록

dwm 프로젝트를 진행하게 되었습니다.

 

[2차]목표

서버에 Exception 로그를 수집하여 담당자에게 slack <-- ㅡmessage 전달하기

 

github 

github.com/visualp/dwm

 

visualp/dwm

dockerhub webhooks and server deploy. Contribute to visualp/dwm development by creating an account on GitHub.

github.com

 

 

[개발환경]

java 11

spring boot

maven

spring data jpa

mariadb

jsch

jslack

shell script

github, dockerhub

bootstrap5 beta

반응형

'dwm' 카테고리의 다른 글

3. dockerhub webooks  (0) 2021.01.07
2.배포현황  (0) 2021.01.07
1-프로젝트 관리  (0) 2021.01.07
블로그 이미지

visualp

c#, java

,

docker 실행 자동화

Docker 2020. 12. 11. 17:03

도커를 현업에 도입하기 위해서 작업 중 테스트 하면서 정리한 기록들을 남김.

[목표]

1 . github -> master 커밋

2.  dockerhub maven build 및 docker 이미지 파일 생성

3. 생성된 이미지를 서버에서 실행

4. nginx 자동 반영

 

1번 부터 4번까지 자동으로 실행이 된다면  무중단 배포가 됨

 

1번과 2번 사이에 젠킨스를 끼어 넣어야 되겠지만. 우선 젠킨스 없이 진행 함. 

젠킨스가 필요 하다면 추후 넣을 예정

 

현제 회사에서는 빌드툴로 maven을 사용하고 있고 1번과 2번은 간단하게 도커허브에서 바로 연동가능합니다.

2번 과정에서 도커파일을 maven을 이용해서 컴파일 하는 스크립트 입니다.

가장 중요한 부분은 FROM을 통해서  메이븐 빌드영역과

자바를 실행하는 zulu-openjdk 영역이 다릅니다.

copy때 이 부분 때문에 많은 시간을 소비 했습니다. ㅜㅜ

 

Dockerfile

###########################################
#maven build 영역
###########################################
FROM maven:3.6.3-openjdk-11 as builder
ENV APPNAME testapp
RUN adduser $APPNAME
WORKDIR /home/$APPNAME
COPY pom.xml .
COPY src ./src
RUN mvn -f pom.xml package -Dmaven.test.skip=true -Dfile.encoding=UTF-8

################################################
#실행영역
################################################
FROM azul/zulu-openjdk-centos:11.0.9-11.43.21
ENV APPNAME testapp
WORKDIR /home/$APPNAME
COPY --from=builder /home/$APPNAME/target/*.jar /home/$APPNAME/boot/app.jar
LABEL maintainer="webmaster@fourfree.com"
EXPOSE 8080

ENTRYPOINT ["java","-Dserver.port=8080","-Dspring.profiles.active=prod","-jar", "boot/app.jar" ]

가장 중요한 부분은

COPY --from=builder 

논리적으로 메이븐 빌드하는 영역과 jar실행하는 영역이 다름으로 위와 같이 as builder 선언 후 copy --from 명령을 통해서 복사 합니다.

 

[3번]도커허브에 생성된 이미지를 실행하는 부분

start.sh 쉘 스크립트 입니다.

docker container stop testapp
docker rm testapp
docker pull fourfree/testapp
docker run  -d -p 8902:8080 -v /home/esjob/logs:/home/testapp/logs  -it --name testapp  -e TZ=Asia/Seoul   fourfree/testapp:latest

 - 우선 구동되고 있는 testapp 컨테이너 stop

 - testapp 컨테이너 삭제

 - testapp-> 도커허브에서 latest파일 다운로드 ( 이미 최신 버전이면 다운로드 하지 않습니다.)

 - -e TZ=Asia/Seoul 옵션을 반드시줘야 timezone-> 서울로 생성됨

 

나머지 부분은 추후 더 추가할 예정

반응형

'Docker' 카테고리의 다른 글

docker rabbitmq 설치  (0) 2021.01.15
docker , redis설치  (0) 2021.01.14
도커허브에서 빌드된 이미지 다운로드  (0) 2020.12.11
도커허브 로그인  (0) 2020.12.11
centos7 docker 설치 , docker install  (0) 2020.12.08
블로그 이미지

visualp

c#, java

,