반응형

golang , oracle 기반으로 백엔드 프로젝트를 진행하고 있고,

rabbitmq를 이용해서 대량 batch 처리하기로 프로젝트를 구성 하였습니다.

1.golang  -> gcc 필수 ( 컴파일 하기 위해서)

2.libc-dev -> oracle 필수

3. 오라클 instantclient 를 다운로드 받아서 설치 합니다.

4. 컴파일된 실행파일, shellscript 파일은 반드시 실행권을 줘야함

5. cmd 로 명령어 실행할 때 반드시 sh 넣어 줘야함

6. 반드시 golang project는 module 을 이용해서 만들것

  (java에 maven 생각하면됨 : 컴파일 하기 전 관련 소스파일을 다운로드 받아 실행함!)

 

 

FROM golang:1.15.6-alpine3.12 as builder
RUN apk add gcc
RUN apk add libc-dev
RUN apk --no-cache add tzdata && \
        cp /usr/share/zoneinfo/Asia/Seoul /etc/localtime && \
        echo "Asia/Seoul" > /etc/timezone

ENV LD_LIBRARY_PATH=/lib
RUN wget https://download.oracle.com/otn_software/linux/instantclient/193000/instantclient-basic-linux.x64-19.3.0.0.0dbru.zip && \
    unzip instantclient-basic-linux.x64-19.3.0.0.0dbru.zip && \
    cp -r instantclient_19_3/* /lib && \
    rm -rf instantclient-basic-linux.x64-19.3.0.0.0dbru.zip && \
    apk add libaio && \
    apk add libaio libnsl libc6-compat && \
    cd /lib && \
    ln -s /lib64/* /lib && \
    ln -s libnsl.so.2 /usr/lib/libnsl.so.1 && \
    ln -s libc.so /usr/lib/libresolv.so.2

WORKDIR /home/app
COPY go.mod .
COPY go.sum .
COPY startup.sh .
COPY . .
RUN mkdir logs
RUN go build -o ./bin/app .
RUN chmod 755 ./bin/app
RUN chmod 755 startup.sh
CMD ["sh","./startup.sh"]
반응형

'Docker' 카테고리의 다른 글

Elastic stack (ELK) on Docker elk 설치하기,centos7  (0) 2021.02.05
centos7 docker-compose 설치하기  (0) 2021.02.05
docker rabbitmq 설치  (0) 2021.01.15
docker , redis설치  (0) 2021.01.14
docker 실행 자동화  (0) 2020.12.11
블로그 이미지

visualp

c#, java

,
반응형

[참고]www.myorasql.com/jdbc_connect.html

 

jdk(jre) 11을 사용하고 있으며   오라클 버전에 맞게 사용해야함

10g 이상을 사용하고 있다면 maven에 아래와 같이 사용하면됨

 

orai18n<-- 다국어 지원을 하기위해서 필수로 porm.xml에 추가해야함

(1.8 이전 버전에서는 해당사항 없음 java9이상부터 해당됨)

 

<!-- oracle -->
        <dependency>
            <groupId>com.oracle.ojdbc</groupId>
            <artifactId>ojdbc8</artifactId>
            <version>19.3.0.0</version>
        </dependency>
        <dependency>
            <groupId>com.oracle.ojdbc</groupId>
            <artifactId>orai18n</artifactId>
            <version>19.3.0.0</version>
        </dependency>

 

반응형
블로그 이미지

visualp

c#, java

,

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

,