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