반응형

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

,

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

,

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

,

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

,
반응형

latest <-- 테그네임

fourfree/testapp<-- 이미지 네임

 

docker pull fourfree/testapp:latest

 

docker images 명령어를 통해서 다운로드 받은 이미지 확인

반응형

'Docker' 카테고리의 다른 글

docker rabbitmq 설치  (0) 2021.01.15
docker , redis설치  (0) 2021.01.14
docker 실행 자동화  (0) 2020.12.11
도커허브 로그인  (0) 2020.12.11
centos7 docker 설치 , docker install  (0) 2020.12.08
블로그 이미지

visualp

c#, java

,

도커허브 로그인

Docker 2020. 12. 11. 11:12
반응형

docker login <-- 명령어 입력 후 아이디 패스워드 넣고 로그인

[root@localhost /home/codegen]# docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: fourfree
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

 

반응형

'Docker' 카테고리의 다른 글

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

visualp

c#, java

,
반응형

centos7 기준 docker설치

1 .  아래 명령어로 실행( 가장 최신의 docker 버전을 설치해줌

curl -s https://get.docker.com | sudo sh

 

2.  systemctl enable docker.service

 - 서버 부팅시 자동으로 docker 서비스가 시작되도록 설정

3. service docker start

 - 설치한 도커서비스 시작

 

4. systemctl status docker.service

 - 도커서비스 상태 확인

[root@localhost /home]#  systemctl status docker.service
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since 화 2020-12-08 12:00:56 KST; 15min ago
     Docs: http://docs.docker.com
 Main PID: 3839 (dockerd-current)
   CGroup: /system.slice/docker.service
           ├─3839 /usr/bin/dockerd-current --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current --default-runtime=docker-runc --exec-opt native.cgroupdriver=systemd --userland-proxy-path=/usr/libexec/docker/docker-proxy-c...
           └─3853 /usr/bin/docker-containerd-current -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --metrics-interval=0 --start-timeout 2m --state-dir /var/run/docker/libcontainerd/containerd --shim docker-containerd-...

12월 08 12:00:56 localhost.localdomain dockerd-current[3839]: time="2020-12-08T12:00:56.538619829+09:00" level=info msg="Loading containers: start."
12월 08 12:00:56 localhost.localdomain dockerd-current[3839]: time="2020-12-08T12:00:56.550207450+09:00" level=warning msg="Running modprobe bridge br_netfilter failed with message: modprobe: WARNING: Module br_netfilter not found.\n...
12월 08 12:00:56 localhost.localdomain dockerd-current[3839]: time="2020-12-08T12:00:56.554882918+09:00" level=info msg="Firewalld running: false"
12월 08 12:00:56 localhost.localdomain dockerd-current[3839]: time="2020-12-08T12:00:56.602266038+09:00" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon option --bip can be...red IP address"
12월 08 12:00:56 localhost.localdomain dockerd-current[3839]: time="2020-12-08T12:00:56.631344401+09:00" level=info msg="Loading containers: done."
12월 08 12:00:56 localhost.localdomain dockerd-current[3839]: time="2020-12-08T12:00:56.632363121+09:00" level=warning msg="Not using native diff for overlay2, this may cause degraded performance for building images: o...r later to fix"
12월 08 12:00:56 localhost.localdomain dockerd-current[3839]: time="2020-12-08T12:00:56.637499293+09:00" level=info msg="Daemon has completed initialization"
12월 08 12:00:56 localhost.localdomain dockerd-current[3839]: time="2020-12-08T12:00:56.637517968+09:00" level=info msg="Docker daemon" commit="0be3e21/1.13.1" graphdriver=overlay2 version=1.13.1
12월 08 12:00:56 localhost.localdomain dockerd-current[3839]: time="2020-12-08T12:00:56.642381158+09:00" level=info msg="API listen on /var/run/docker.sock"
12월 08 12:00:56 localhost.localdomain systemd[1]: Started Docker Application Container Engine.
Hint: Some lines were ellipsized, use -l to show in full.

 

5- docker version

[root@localhost ~/download/docker]# docker -v
Docker version 19.03.14, build 5eb3275d40
[root@localhost ~/download/docker]#

 

6. docker pull centos

- centos기준으로 설치 했음으로 docker centos전용 image 다운받기

 

7 docker images

[root@localhost /home]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/centos    latest              300e315adb2f        2 hours ago         209 MB
반응형

'Docker' 카테고리의 다른 글

docker rabbitmq 설치  (0) 2021.01.15
docker , redis설치  (0) 2021.01.14
docker 실행 자동화  (0) 2020.12.11
도커허브에서 빌드된 이미지 다운로드  (0) 2020.12.11
도커허브 로그인  (0) 2020.12.11
블로그 이미지

visualp

c#, java

,