Jenkins & Redis
1. jenkins 자동 배포 마무리
젠킨스를 도커로 설치해서 젠킨스 서버에서 프로젝트를 배포하고 싶은 서버로
ssh 명령어로 배포하려고 한다.
비밀번호 없이 ssh 명령어를 사용하기 위해
SSH Key를 생성하고 등록해야 한다.
- SSH key 생성
우선 클라이언트 서버(젠킨스 서버)에서 아래 명령어로 SSH key를 생성한다.
ssh-keygen
키 페어를 만들려면 OpenSSH에 포함되어 있는 ssh-keygen 유틸리티를 사용한다.
디폴트로 2048-bit RSA 키 페어를 만들게 되어 있다.
위 명령어를 입력하면 키 생성 위치와 비밀번호를 물어보는데
따로 설정하지 않아도되서 Enter 누르고 넘어갔다.
모두 완료하면 private 키와 public 키 쌍이 생성된다.
- 서버에 key copy
public키를 서버에 넣어줘야 SSH key를 인증에 사용할 수 있다.
ssh-copy-id USER@HOST
위 명령어를 사용해 키를 복사할 수 있다.
이제 젠킨스에서 ssh로 프로젝트 서버에 접속할 수 있다.
- Shell Script 작성
application.yml
파일을 git에 올릴 수 없어서
서버에 올려두고 cp 명령어로 복사해줬다..
ssh litebook@20.41.76.24 "sudo docker build -t litebook:latest /home/jenkins_home/build"
ssh litebook@20.41.76.24 "sudo docker stop litebook"
ssh litebook@20.41.76.24 "sudo docker rm litebook"
ssh litebook@20.41.76.24 "sudo docker run -d -p 8080:8080 --name litebook litebook:latest"
ssh 접속으로 Docker image를 만들고 container 실행까지 완료했다.
2. Redis password 설정
redis 접속 password를 설정하고 싶으면 redis.conf
파일을 생성해야 한다.
- redis.conf
requirepass PASSWORD
- Docker로 설치 & 설정
sudo docker run -v /home/litebook:/var/litebook/redis --name redis -d -p 6379:6379 redis redis-server /var/litebook/redis/redis.conf
docker로 위 처럼 레디스 설정파일을 지정해줄 수 있다.
- RedisConfig.java
private RedisProperties redisProperties;
@Autowired
public RedisConfig(RedisProperties redisProperties){
this.redisProperties = redisProperties;
}
@Bean
public RedisConnectionFactory redisConnectionFactory() {
RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration();
redisStandaloneConfiguration.setPassword(redisProperties.getRedisPassword());
redisStandaloneConfiguration.setHostName(redisProperties.getRedisHost());
redisStandaloneConfiguration.setPort(redisProperties.getRedisPort());
LettuceConnectionFactory lettuceConnectionFactory = new LettuceConnectionFactory(redisStandaloneConfiguration);
return lettuceConnectionFactory;
}
RedisConnectionFactory도 수정해줬다.