본문 바로가기
DevOps/AWS

EC2 시작 시 자동 실행

by strongstar 2025. 12. 11.

DE7 최종 팀 프로젝트 환경 설정 연습한 내용 정리

Amazon Linux 2023 사용

 

.env 파일 생성

.env 파일을 프로젝트 폴더 바깥에 만들고, 자동 배포 될때마다 복사하게 함 (deploy.yml) (sample.env)

# .env 파일 생성
$ vi /home/ec2-user/.env

# (선택) 보안을 위해 권한 변경
$ chmod 600 /home/ec2-user/.env

 

1. Docker

'settingTest'를 실제 serviceName 으로 변경해서 사용할 것

 

1.1. 서비스 파일 생성

# 도커 경로 확인
$ which docker
$ which docker-compose

# 파일 생성
$ sudo vi /etc/systemd/system/settingTest.service
# settingTest.service 내용

[Unit]
Description=SettingTest Docker Compose Stack
Requires=docker.service
After=docker.service network-online.target
Wants=network-online.target

[Service]
User=ec2-user
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/home/ec2-user/settingTest
ExecStartPre=/bin/bash -c "if [ -f /home/ec2-user/.env ]; then cp /home/ec2-user/.env /home/ec2-user/settingTest/.env; fi"
ExecStartPre=/bin/bash -c "/usr/bin/docker compose down || true"
ExecStart=/bin/bash -c "/usr/bin/docker compose up -d"
ExecStop=/bin/bash -c "/usr/bin/docker compose down"
TimeoutStartSec=0
Restart=no

[Install]
WantedBy=multi-user.target

 

1.2. systemd 등록  활성화

$ sudo systemctl daemon-reload
$ sudo systemctl enable settingTest
$ sudo systemctl start settingTest
$ sudo systemctl status settingTest

 

 

2. Github Actions Runner

2.1. 서비스 상태 확인

$ sudo systemctl status actions.runner.*

 

서비스가 없으면 다음 단계 진행

 

2.2. 서비스 이름 확인

$ systemctl list-units | grep runner

 

2.2. 서비스 설정 및 실행

위에서 확인한 이름 넣기

$ sudo systemctl enable actions.runner.<org>-<repo>.<runnerName>.service
$ sudo systemctl start actions.runner.<org>-<repo>.<runnerName>.service
$ sudo systemctl status actions.runner.<org>-<repo>.<runnerName>.service

 

 

전체 흐름도

1. EC2 시작
   ↓
2. systemd가 서비스 자동 시작
   ├─ docker.service 시작
   ├─ settingTest.service 시작 (기존 코드로 실행)
   └─ actions.runner.*.service 시작
   ↓
3. GitHub Actions runner 연결
   ↓
4. 대기 중이던 workflow 실행
   ↓
5. 최신 코드로 재배포
   ↓
6. 최종 상태: 최신 커밋으로 업데이트 완료

'DevOps > AWS' 카테고리의 다른 글

EC2 Bastion Host 연습 기록  (0) 2025.12.15
EC2에 CI/CD 설정  (0) 2025.12.11
EC2에 Git, Docker 설치  (0) 2025.12.11
AWS 서비스 정리  (0) 2025.10.17
[AWS] RDS Instance 생성하기  (0) 2018.03.25