Skip to content

Commit 86493a5

Browse files
committed
feat: 도커로 배포환경 이전
1 parent c5dfb4a commit 86493a5

File tree

9 files changed

+269
-0
lines changed

9 files changed

+269
-0
lines changed

.github/CODEOWNERS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
@username @collaborateUsername

.github/CODE_OF_CONDUCT.md

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
# Contributor Covenant Code of Conduct
2+
3+
## Our Pledge
4+
5+
In the interest of fostering an open and welcoming environment, we as
6+
contributors and maintainers pledge to making participation in our project and
7+
our community a harassment-free experience for everyone, regardless of age, body
8+
size, disability, ethnicity, sex characteristics, gender identity and expression,
9+
level of experience, education, socio-economic status, nationality, personal
10+
appearance, race, religion, or sexual identity and orientation.
11+
12+
## Our Standards
13+
14+
Examples of behavior that contributes to creating a positive environment
15+
include:
16+
17+
* Using welcoming and inclusive language
18+
* Being respectful of differing viewpoints and experiences
19+
* Gracefully accepting constructive criticism
20+
* Focusing on what is best for the community
21+
* Showing empathy towards other community members
22+
23+
Examples of unacceptable behavior by participants include:
24+
25+
* The use of sexualized language or imagery and unwelcome sexual attention or
26+
advances
27+
* Trolling, insulting/derogatory comments, and personal or political attacks
28+
* Public or private harassment
29+
* Publishing others' private information, such as a physical or electronic
30+
address, without explicit permission
31+
* Other conduct which could reasonably be considered inappropriate in a
32+
professional setting
33+
34+
## Our Responsibilities
35+
36+
Project maintainers are responsible for clarifying the standards of acceptable
37+
behavior and are expected to take appropriate and fair corrective action in
38+
response to any instances of unacceptable behavior.
39+
40+
Project maintainers have the right and responsibility to remove, edit, or
41+
reject comments, commits, code, wiki edits, issues, and other contributions
42+
that are not aligned to this Code of Conduct, or to ban temporarily or
43+
permanently any contributor for other behaviors that they deem inappropriate,
44+
threatening, offensive, or harmful.
45+
46+
## Scope
47+
48+
This Code of Conduct applies both within project spaces and in public spaces
49+
when an individual is representing the project or its community. Examples of
50+
representing a project or community include using an official project e-mail
51+
address, posting via an official social media account, or acting as an appointed
52+
representative at an online or offline event. Representation of a project may be
53+
further defined and clarified by project maintainers.
54+
55+
## Enforcement
56+
57+
Instances of abusive, harassing, or otherwise unacceptable behavior may be
58+
reported by contacting the project team at {your_email}. All
59+
complaints will be reviewed and investigated and will result in a response that
60+
is deemed necessary and appropriate to the circumstances. The project team is
61+
obligated to maintain confidentiality with regard to the reporter of an incident.
62+
Further details of specific enforcement policies may be posted separately.
63+
64+
Project maintainers who do not follow or enforce the Code of Conduct in good
65+
faith may face temporary or permanent repercussions as determined by other
66+
members of the project's leadership.
67+
68+
## Attribution
69+
70+
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
71+
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
72+
73+
[homepage]: https://www.contributor-covenant.org
74+
75+
For answers to common questions about this code of conduct, see
76+
https://www.contributor-covenant.org/faq
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
name: 버그 템플릿
2+
description: 버그 이슈를 작성할 때 사용하는 템플릿입니다.
3+
4+
title: '[버그] '
5+
labels: ['생성페이지']
6+
body:
7+
- type: input
8+
attributes:
9+
label: 🗺️ 문제 발생 위치
10+
description: 문제가 발생한 위치의 URL을 입력해주세요 !
11+
placeholder: ex) http://localhost:8001/event
12+
validations:
13+
required: true
14+
- type: textarea
15+
attributes:
16+
label: ☠️ 문제 내용
17+
description: 문제의 내용을 작성해주세요 !
18+
placeholder: ex) 이러한 기대값이 나와야 하는데 이러한 결과가 나왔다.
19+
render: plain text
20+
- type: textarea
21+
attributes:
22+
label: 📸 스크린샷 || 영상
23+
description: 문제가 발생한 스크린샷이나 영상을 업로드해주세요 !
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
---
2+
name: Bug report
3+
about: Create a report to help us improve
4+
title: your_title
5+
labels: your_label
6+
assignees: your_username
7+
8+
---
9+
10+
**Describe the bug**
11+
A clear and concise description of what the bug is.
12+
13+
**To Reproduce**
14+
Steps to reproduce the behavior:
15+
1. Go to '...'
16+
2. Click on '....'
17+
3. Scroll down to '....'
18+
4. See error
19+
20+
**Expected behavior**
21+
A clear and concise description of what you expected to happen.
22+
23+
**Screenshots**
24+
If applicable, add screenshots to help explain your problem.
25+
26+
**Desktop (please complete the following information):**
27+
- OS: [e.g. iOS]
28+
- Browser [e.g. chrome, safari]
29+
- Version [e.g. 22]
30+
31+
**Smartphone (please complete the following information):**
32+
- Device: [e.g. iPhone6]
33+
- OS: [e.g. iOS8.1]
34+
- Browser [e.g. stock browser, safari]
35+
- Version [e.g. 22]
36+
37+
**Additional context**
38+
Add any other context about the problem here.
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
---
2+
name: Feature request
3+
about: Suggest an idea for this project
4+
title: Feature Request
5+
labels: your_labels
6+
assignees: your_username
7+
8+
---
9+
10+
**Is your feature request related to a problem? Please describe.**
11+
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
12+
13+
**Describe the solution you'd like**
14+
A clear and concise description of what you want to happen.
15+
16+
**Describe alternatives you've considered**
17+
A clear and concise description of any alternative solutions or features you've considered.
18+
19+
**Additional context**
20+
Add any other context or screenshots about the feature request here.

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
## 체크리스트
2+
3+
- [ ] 기능 추가
4+
- [ ] 기능 수정
5+
6+
## 설명
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
name: auto-cd(dev)
2+
3+
on:
4+
workflow_dispatch:
5+
inputs:
6+
dev_command:
7+
type: choice
8+
required: true
9+
description: "dev command"
10+
options:
11+
- pnpm dev
12+
13+
env:
14+
SERVER_HOST: ${{ secrets.DEV_SERVER_HOST }}
15+
SERVER_USER: ${{ secrets.DEV_SERVER_USER }}
16+
SERVER_SSH_KEY: ${{ secrets.DEV_SERVER_SSH_KEY }}
17+
SERVER_SSH_PASSPHRASE: ${{ secrets.DEV_SERVER_SSH_PASSPHRASE }}
18+
DEPLOY_PATH: choose-tale/Gwon-Front
19+
BRANCH: ${{github.ref_name}}
20+
21+
jobs:
22+
deploy:
23+
runs-on: ubuntu-latest
24+
steps:
25+
- uses: actions/checkout@v3
26+
27+
- name: echo env
28+
run: |
29+
echo ${{ env.DEPLOY_PATH }}
30+
echo ${{ env.BRANCH }}
31+
32+
- name: Set up SSH key with passphrase
33+
uses: webfactory/ssh-agent@v0.5.3
34+
with:
35+
ssh-private-key: ${{ env.SERVER_SSH_KEY }}
36+
ssh-passphrase: ${{ env.SERVER_SSH_PASSPHRASE }}
37+
38+
- name: 원격 서버에 배포
39+
run: |
40+
ssh -o StrictHostKeyChecking=no ${{ env.SERVER_USER }}@${{ env.SERVER_HOST }} << 'EOF'
41+
42+
43+
cd ${{ env.DEPLOY_PATH }}
44+
git restore
45+
git fetch --all
46+
git pull origin ${{ env.BRANCH }}
47+
48+
docker build -t gwon-front .
49+
docker run -e NEXTAUTH_SECRET=${{ secrets.NEXTAUTH_SECRET }} -d -p 3000:3000 gwon-front
50+
51+
nohup ${{ inputs.dev_command }} > output.log 2>&1 &
52+
sleep 5
53+
EOF
54+
55+
- name: 슬랙 메시지 전송
56+
env:
57+
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_CI_CHANNEL_WEBHOOK }}
58+
run: |
59+
curl -X POST -H 'Content-type: application/json' --data '{"text":"프론트 배포가 완료되었습니다. port: 3000 , branch: ${{ env.BRANCH }}"}' $SLACK_WEBHOOK_URL
60+
61+
- name: SSH 키 정리
62+
run: rm -rf ~/.ssh

dockerfile

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# 1. Build Stage
2+
FROM node:20.15.1 AS builder
3+
4+
RUN npm install -g pnpm
5+
6+
7+
# 작업 디렉토리 설정
8+
WORKDIR /app
9+
10+
# package.json과 package-lock.json 복사
11+
COPY package*.json ./
12+
13+
COPY .npmrc ./
14+
15+
# 의존성 설치
16+
RUN pnpm install
17+
18+
# 소스 코드 복사
19+
COPY . .
20+
21+
# Next.js 애플리케이션 빌드
22+
RUN pnpm run build
23+
24+
# 2. Production Stage
25+
FROM node:20.15.1
26+
27+
# 작업 디렉토리 설정
28+
WORKDIR /app
29+
30+
RUN npm install -g pnpm
31+
32+
COPY .npmrc ./
33+
34+
# 빌드된 파일 복사
35+
COPY --from=builder /app/package.json /app/package-lock.json ./
36+
COPY --from=builder /app/.next ./.next
37+
38+
# 프로덕션 의존성 설치
39+
RUN pnpm install --production
40+
41+
# Next.js 애플리케이션 실행
42+
CMD ["pnpm", "start"]

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
"scripts": {
66
"dev": "next dev",
77
"build": "next build",
8+
"start:dev": "NODE_ENV=development next start",
89
"start": "next start",
910
"lint": "next lint"
1011
},

0 commit comments

Comments
 (0)