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"""
)
]
)
]
)
}
}
}
}
}
DevOps
- pipeline 예제 2025.02.16
- ssh 설치 2025.02.10
- ufw 명령어 2025.02.10
- apt 명령어 2025.02.10
- Redis 설치 2025.02.10
- Docker 명령어 2025.02.10
- Docker 설치 2025.02.10
- CentOS sudo 2018.08.03
- CentOS yum 2018.07.27
- CentOS iptable 2011.12.26
pipeline 예제
ssh 설치
[apt 업데이트]
sudo apt-get update
[apt 설치]
sudo apt-get install openssh-server
[ssh 시작]
sudo systemctl start ssh
[시스템등록 후 자동시작]
sudo ststemctl enable ssh
ufw 명령어
[활성화]
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 명령어
[패키지 설치]
apt install
[패키지 삭제]
apt remove
[레파지토리 인덱스 갱신]
apt update
[패키지 업그레이드]
apt upgrade
[패키지 검색]
apt search
[패키지 상세 정보 출력]
apt show
[패키지 리스트]
apt list
Redis 설치
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 명령어
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] : 이미지 강제 삭제
Docker 설치
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
CentOS sudo
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
CentOS yum
1. yum 이란
- RPM 기반 시스템용 패키지 설치/삭제/업데이트 도구
2. 기본사용법
기능 | 명령어 |
패키지 설치 | yum install 패키지명 |
패키지 삭제 | yum remove 패키지명 |
패키지 업데이트 | yum update 패키지명 |
패키지 정보확인 | yum info 패키지명 |
패키지 검색 | yum search 검색어 |
패키지 목록 보기 | yum list |
설치된 패키지 목록보기 | yum list installed |
CentOS iptable
외부 접속을 위해 포트를 열어줄 때
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로 서비스 재시작