pipeline {
    agent any
    environment {
        IMAGE_NAME = "test-api:lts"
        LOCAL_NAME = "depoly-server-root"
        REMOTE_NAME = "web-server-root"
        SOURCE_FILES = "*"
        REMOTE_DIRECTORY = "/test-api"
    }
    stages {
        stage('Git Clone') {
            steps {
                echo 'echo::Git Clone'
                git url: 'https://github.com/jaehun0210/test-api.git', branch: 'main', credentialsId: 'github_access_token_jaehun0210'
            }
        }
        stage('Docker Build Image') {
    steps {
        echo 'echo::Docker Build Image'
        script {
            sshPublisher(
                        publishers: [
                            sshPublisherDesc(
                                configName: "${LOCAL_NAME}",
                                verbose: true,
                                transfers: [
                                    sshTransfer(
                                        execCommand: 
                                        """
                                        cd /jenkins/workspace/test-api-2 && pwd && docker build -t ${IMAGE_NAME} . && docker save ${IMAGE_NAME} > ${IMAGE_NAME}.tar
                                        """
                                    )
                                ]
                            )
                        ]
                    )
        }
    }
        }
        stage('Docker Depoly Image') {
    steps {
        echo 'echo::Docker Depoly Image'
        script {
            sshPublisher(
                        publishers: [
                            sshPublisherDesc(
                                configName: "${REMOTE_NAME}",
                                verbose: true,
                                transfers: [
                                    sshTransfer(
                                        execCommand: """pwd && docker load -i ${IMAGE_NAME}.tar && docker compose stop && docker compose up -d --build""", // 원격 명령 (비워둘 수 있음)
                                        execTimeout: 120000, // 명령 실행 제한 시간 (밀리초)
                                        flatten: false, // true로 설정하면 원격 경로에서 파일이 복사됩니다.
                                        makeEmptyDirs: false, // true로 설정하면 원격 디렉토리에 빈 디렉토리가 생성됩니다.
                                        noDefaultExcludes: false,
                                        patternSeparator: '[, ]+',
                                        remoteDirectory: "/",
                                        remoteDirectorySDF: false,
                                        removePrefix: '', // 원본 파일 경로에서 제거할 접두사
                                        sourceFiles: """${IMAGE_NAME}.tar, docker-compose.yml"""
                                    )
                                ]
                            )
                        ]
                    )
        }
    }
        }
    }
}

[apt 업데이트]

sudo apt-get update

 

[apt 설치]

sudo apt-get install openssh-server

 

[ssh 시작]

sudo systemctl start ssh

 

[시스템등록 후 자동시작]

sudo ststemctl enable ssh

[활성화]

sudo ufw enable

 

[비활성화]

sudo ufw disable

 

[상태조회]

sudo ufw status verbose

 

[ssh 허용]

sudo ufw allow 22/tcp, sudo ufw allow 22/udp

 

[ssh 차단]

sudo ufw deny 22/tcp, sudo ufw deny 22/udp

 

[ssh 삭제]

sudo ufw delete deny ssh/tcp, sudo ufw delete deny ssh/udp

 

[IP 허용]

sudo ufw allow from 192.168.0.1

sudo ufw allow from 192.168.0.0/24

 

[IP, PORT 허용]

sudo ufw allow from 192.168.0.1 to any port 22

sudo ufw allow from 192.168.0.0/24 to any port 22

[패키지 설치]

apt install 

 

[패키지 삭제]

apt remove

 

[레파지토리 인덱스 갱신]

apt update

 

[패키지 업그레이드]

apt upgrade

 

[패키지 검색]

apt search

 

[패키지 상세 정보 출력]

apt show

 

[패키지 리스트]

apt list

sudo apt --install list | grep redis : 설치 확인 명령어

sudo  apt install redis : 설치 명령어

sudo  redis-server: 실행 명령어

sudo  redis-server --port 6380 : 실행 명령어 (포트지정)

redis-cli -p 6379, 접속 후 ping 입력 후 pong 응답받으면 성공 

docker ps : 현재 실행 중인 컨테이너 조회

docker ps -a : 모든 컨테이너 조회

 

docker build -t [생성할 이름] . : 새 이미지 생성
docker run -p 호스트 포트:컨테이너 포트 [이미지 이름] : 컨테이너 실행
docker run -d -p 호스트 포트:컨테이너 포트 [이미지 이름] : 백그라운드에서 컨테이너 실행


docker kill [이미지 이름] : 컨테이너 (Nginx 서버 종료)
docker container ls -a : 컨테이너 목록 조회
docker container rm [컨테이너ID] : 컨테이너 제거

 

docker images : 이미지 생성 및 목록 확인

docker rmi [이미지ID] : 이미지 삭제

docker rmi -f [이미지ID] : 이미지 강제 삭제

1. 우분투 시스템 패키지 업데이트
sudo apt update

2. 필요한 패키지 설치
sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

3. Docker의 공식 GPG키를 추가
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

4. Docker의 공식 apt 저장소를 추가
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

5. 시스템 패키지 업데이트
sudo apt-get update

6. Docker 설치
sudo apt-get install docker-ce docker-ce-cli containerd.io

7. Docker가 설치 확인

7-1. 도커 실행상태 확인
sudo systemctl status docker

7-2. 도커 실행
sudo docker run hello-world

 sudo 명령어를 사용하여 제한적으로 실행하는 것이 시스템의 보안 측명에서 용이하다.

 

설정파일 위치 : /etc/sudoers 

 

계정명 호스트명=(실행 계정명) [NOPASSWD:] 명령어

 

항목  의미 
 계정명  명령어 실행 권한을 줄 계정명이나 그룹명. 모두에게 줄 경우 ALL
 호스트  실행할 대상 서버명이나 IP. 모든 서버가 대상이라면 ALL
 실행 계정명  명령어를 실행할 때 어떤 계정의 권한을 갖는지 설정하며 생략시 root 로 실행
 NOPASSWD  설정할 경우 명령어를 실행할 때 계정 암호를 물어보지 않음.
 명령어  실행을 허용하는 명령어의 경로. ALL 일 경우 모든 명령어를 허용

 

 

특정 사용자의 sudo를 사용할 수 있는 설정

userid    ALL=(ALL)    ALL

 

 

그룹에 포함된 모든 사용자가 sudo를 사용할 수 있는 설정

%wheel    ALL=(ALL)    ALL

패스워드 생략 설정

userid    ALL=(ALL)    NOPASSWD: ALL

%wheel    ALL=(ALL)    NOPASSWD: ALL

 

 

 

1. yum 이란

- RPM 기반 시스템용 패키지 설치/삭제/업데이트 도구

 

2. 기본사용법



 기능 명령어 
패키지 설치  yum install 패키지명 
패키지 삭제  yum remove 패키지명
패키지 업데이트  yum update 패키지명 
패키지 정보확인  yum info 패키지명 
패키지 검색  yum search 검색어 
패키지 목록 보기  yum list 
설치된 패키지 목록보기  yum list installed

 


외부 접속을 위해 포트를 열어줄 때

vi /etc/sysconfig/iptables

1521 포트 열어줄 때

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 1521 -j ACCEPT

service iptables restart로 서비스 재시작

+ Recent posts