forked from CEOS-Developers/django-vote-16th
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
12 changed files
with
251 additions
and
19 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
name: Deploy to EC2 | ||
|
||
on: | ||
push: | ||
branches: | ||
- main | ||
|
||
jobs: | ||
build: | ||
name: Build | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: checkout | ||
uses: actions/checkout@master | ||
|
||
- name: create env file | ||
run: | | ||
touch .env | ||
echo "${{ secrets.ENV_VARS }}" >> .env | ||
- name: create remote directory | ||
uses: appleboy/ssh-action@master | ||
with: | ||
host: ${{ secrets.HOST }} | ||
username: ubuntu | ||
key: ${{ secrets.KEY }} | ||
script: mkdir -p /home/ubuntu/srv/ubuntu | ||
|
||
- name: copy source via ssh key | ||
uses: burnett01/[email protected] | ||
with: | ||
switches: -avzr --delete | ||
remote_path: /home/ubuntu/srv/ubuntu/ | ||
remote_host: ${{ secrets.HOST }} | ||
remote_user: ubuntu | ||
remote_key: ${{ secrets.KEY }} | ||
|
||
- name: executing remote ssh commands using password | ||
uses: appleboy/ssh-action@master | ||
with: | ||
host: ${{ secrets.HOST }} | ||
username: ubuntu | ||
key: ${{ secrets.KEY }} | ||
script: | | ||
sh /home/ubuntu/srv/ubuntu/config/scripts/deploy.sh |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -135,6 +135,7 @@ celerybeat.pid | |
|
||
# Environments | ||
.env | ||
.env.prod | ||
.venv | ||
env/ | ||
venv/ | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
from .dev import * |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
from .base import * # noqa | ||
|
||
DEBUG = True | ||
|
||
DATABASES = { | ||
'default': { | ||
'ENGINE': 'django.db.backends.mysql', | ||
'NAME': env('DATABASE_NAME'), | ||
'USER': env('DATABASE_USER'), | ||
'PASSWORD': env('DATABASE_PASSWORD'), | ||
'HOST': env('DATABASE_HOST'), | ||
'PORT': env('DATABASE_PORT'), | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
from .base import * # noqa | ||
|
||
DEBUG = False | ||
ALLOWED_HOSTS = env.list('DJANGO_ALLOWED_HOSTS') | ||
|
||
DATABASES = { | ||
'default': { | ||
'ENGINE': 'django.db.backends.mysql', | ||
'NAME': env('DATABASE_NAME'), | ||
'USER': env('DATABASE_USER'), | ||
'PASSWORD': env('DATABASE_PASSWORD'), | ||
'HOST': env('DATABASE_HOST'), | ||
'PORT': env('DATABASE_PORT'), | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
# BUILDER # | ||
########### | ||
|
||
# pull official base image | ||
FROM python:3.10.2-alpine as builder | ||
|
||
# set work directory | ||
WORKDIR /usr/src/app | ||
|
||
|
||
# set environment variables | ||
ENV PYTHONDONTWRITEBYTECODE 1 | ||
ENV PYTHONUNBUFFERED 1 | ||
|
||
# install psycopg2 dependencies | ||
RUN apk update && apk add python3 python3-dev mariadb-dev build-base && pip3 install mysqlclient | ||
|
||
# install dependencies | ||
RUN python -m pip install --upgrade pip | ||
COPY ./requirements.txt . | ||
RUN pip wheel --no-cache-dir --no-deps --wheel-dir /usr/src/app/wheels -r requirements.txt | ||
|
||
|
||
######### | ||
# FINAL # | ||
######### | ||
|
||
# pull official base image | ||
FROM python:3.10.2-alpine | ||
|
||
# create directory for the app user | ||
RUN mkdir -p /home/app | ||
|
||
# create the app user | ||
RUN addgroup -S app && adduser -S app -G app | ||
|
||
# create the appropriate directories | ||
ENV HOME=/home/app | ||
ENV APP_HOME=/home/app/web | ||
RUN mkdir $APP_HOME | ||
RUN mkdir $APP_HOME/static | ||
RUN mkdir $APP_HOME/media | ||
WORKDIR $APP_HOME | ||
|
||
# install dependencies | ||
RUN apk update && apk add libpq | ||
RUN apk update \ | ||
&& apk add --virtual build-deps gcc python3-dev musl-dev \ | ||
&& apk add --no-cache mariadb-dev \ | ||
&& apk add libc-dev libffi-dev \ | ||
&& apk add zlib-dev jpeg-dev | ||
COPY --from=builder /usr/src/app/wheels /wheels | ||
COPY --from=builder /usr/src/app/requirements.txt . | ||
RUN pip install mysqlclient | ||
RUN pip install --no-cache /wheels/* | ||
RUN apk del build-deps | ||
|
||
# copy entrypoint-prod.sh | ||
COPY ./config/docker/entrypoint.prod.sh $APP_HOME | ||
|
||
# copy project | ||
COPY . $APP_HOME | ||
|
||
# chown all the files to the app user | ||
RUN chown -R app:app $APP_HOME | ||
|
||
# change to the app user | ||
USER app |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
#!/bin/sh | ||
|
||
python manage.py collectstatic --no-input | ||
python manage.py makemigrations | ||
python manage.py migrate | ||
|
||
exec "$@" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
FROM nginx:1.19.0-alpine | ||
|
||
RUN rm /etc/nginx/conf.d/default.conf | ||
COPY nginx.conf /etc/nginx/conf.d |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
upstream ceos_vote_back { | ||
server web:8000; | ||
} | ||
|
||
server { | ||
|
||
listen 80; | ||
|
||
location / { | ||
proxy_pass http://ceos_vote_back; | ||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | ||
proxy_set_header Host $host; | ||
proxy_redirect off; | ||
} | ||
|
||
location /static/ { | ||
alias /home/app/web/static/; | ||
} | ||
|
||
location /media/ { | ||
alias /home/app/web/media/; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
#!/bin/bash | ||
|
||
# Installing docker engine if not exists | ||
if ! type docker > /dev/null | ||
then | ||
echo "docker does not exist" | ||
echo "Start installing docker" | ||
sudo apt-get update | ||
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common | ||
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - | ||
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable" | ||
sudo apt update | ||
apt-cache policy docker-ce | ||
sudo apt install -y docker-ce | ||
fi | ||
|
||
# Installing docker-compose if not exists | ||
if ! type docker-compose > /dev/null | ||
then | ||
echo "docker-compose does not exist" | ||
echo "Start installing docker-compose" | ||
sudo curl -L "https://github.com/docker/compose/releases/download/1.27.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose | ||
sudo chmod +x /usr/local/bin/docker-compose | ||
fi | ||
|
||
echo "start docker-compose up: ubuntu" | ||
sudo docker-compose -f /home/ubuntu/srv/ubuntu/docker-compose.prod.yml up --build -d |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
version: '3' | ||
services: | ||
|
||
web: | ||
container_name: web | ||
build: | ||
context: ./ | ||
dockerfile: Dockerfile.prod | ||
command: gunicorn CeosVoteBack.wsgi:application --bind 0.0.0.0:8000 | ||
environment: | ||
DJANGO_SETTINGS_MODULE: CeosVoteBack.settings.prod | ||
env_file: | ||
- .env | ||
volumes: | ||
- static:/home/app/web/static | ||
- media:/home/app/web/media | ||
expose: | ||
- 8000 | ||
entrypoint: | ||
- sh | ||
- config/docker/entrypoint.prod.sh | ||
|
||
nginx: | ||
container_name: nginx | ||
build: ./config/nginx | ||
volumes: | ||
- static:/home/app/web/static | ||
- media:/home/app/web/media | ||
ports: | ||
- "80:80" | ||
depends_on: | ||
- web | ||
|
||
volumes: | ||
static: | ||
media: |