Skip to content

Commit 1757c71

Browse files
committed
Fix docker deployment
1 parent 74c2f6d commit 1757c71

File tree

6 files changed

+81
-30
lines changed

6 files changed

+81
-30
lines changed

.travis.yml

+12-7
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,42 @@
11
language: python
2+
23
sudo: required
3-
group: edge
4+
45
services:
56
- docker
7+
68
addons:
79
apt:
810
packages:
911
- python3-dev
1012
- libssl-dev
1113
- libffi-dev
14+
1215
python:
1316
- '3.6'
17+
1418
cache: pip
19+
1520
before-install:
1621
- npm -g install npm@latest
22+
1723
install:
1824
- npm install -g [email protected]
1925
- pip3 install -r requirements/tests.txt
26+
2027
env:
21-
- >-
22-
APP_CONFIG="config.TestingConfig" PATH=$PATH:${HOME}/google-cloud-sdk/bin
23-
CLOUDSDK_CORE_DISABLE_PROMPTS=1
28+
- APP_CONFIG="config.TestingConfig" PATH=$PATH:${HOME}/google-cloud-sdk/bin
29+
2430
before_script:
2531
- psql -c 'create database test;' -U postgres
2632
- export DATABASE_URL=postgresql://postgres@localhost:5432/test
2733
- export TEST_DATABASE_URL=postgresql://postgres@localhost:5432/test
2834
- bash scripts/test_multiple_heads.sh
2935
- dredd
36+
3037
script:
3138
- nosetests tests/unittests -v --with-coverage
39+
3240
after_success:
3341
- 'bash <(curl -s https://codecov.io/bash)'
3442
- bash scripts/push_api_docs.sh
35-
#- bash kubernetes/travis/deploy.sh
36-
#- bash kubernetes/travis/deploy-staging.sh
37-
#- bash kubernetes/travis/deploy-nextgen.sh

Dockerfile

+29-18
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,39 @@
1-
FROM python:3.6
1+
FROM python:3.6-alpine as base
22
LABEL maintainer="Niranjan Rajendran <[email protected]>"
33

4-
ENV INSTALL_PATH /open_event
5-
RUN mkdir -p $INSTALL_PATH
4+
##
5+
##
66

7-
WORKDIR $INSTALL_PATH
7+
FROM base as builder
88

9-
# apt-get update and update some packages
10-
RUN apt-get update && apt-get install -y wget git ca-certificates curl && update-ca-certificates && apt-get clean -y
9+
WORKDIR /install
1110

11+
RUN apk update && \
12+
apk add --virtual build-deps git gcc python3-dev musl-dev jpeg-dev zlib-dev libevent-dev file-dev libffi-dev openssl && \
13+
apk add postgresql-dev && \
14+
pip install setuptools
1215

13-
# install deps
14-
RUN apt-get install -y --no-install-recommends build-essential python3-dev python3-setuptools libpq-dev libevent-dev libmagic-dev libssl-dev python3-pip libffi6 libffi-dev && apt-get clean -y
16+
ADD requirements.txt /requirements.txt
17+
ADD requirements /requirements/
1518

16-
# copy just requirements
17-
COPY requirements.txt requirements.txt
18-
COPY requirements requirements
19+
RUN wget https://bootstrap.pypa.io/ez_setup.py && python ez_setup.py
1920

20-
# install requirements
21-
RUN pip3 install --no-cache-dir -r requirements.txt
22-
RUN pip3 install eventlet
23-
RUN pip3 install colour
21+
ENV PYTHONPATH /install/lib/python3.6/site-packages
22+
RUN pip install --install-option="--prefix=/install" setuptools && \
23+
LIBRARY_PATH=/lib:/usr/lib pip install --install-option="--prefix=/install" -r /requirements.txt
2424

25-
# copy remaining files
26-
COPY . .
2725

28-
CMD bash scripts/docker_run.sh
26+
##
27+
##
28+
29+
FROM base
30+
31+
COPY --from=builder /install /usr/local
32+
RUN apk --no-cache add postgresql-dev ca-certificates libxslt jpeg zlib file libxml2 git && \
33+
pip install git+https://github.com/fossasia/flask-rest-jsonapi.git@shubhamp-master#egg=flask-rest-jsonapi
34+
35+
WORKDIR /data/app
36+
ADD . .
37+
38+
EXPOSE 8080
39+
CMD ["sh", "scripts/container_start.sh"]

kubernetes/travis/deploy-docker.sh

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#!/usr/bin/env bash
2+
3+
export DEPLOY_BRANCH=${DEPLOY_BRANCH:-master}
4+
5+
if [ "$TRAVIS_PULL_REQUEST" != "false" -o "$TRAVIS_REPO_SLUG" != "fossasia/open-event-server" -o "$TRAVIS_BRANCH" != "$DEPLOY_BRANCH" ]; then
6+
echo "Skip production deployment for a very good reason."
7+
exit 0
8+
fi
9+
10+
export REPOSITORY="https://github.com/${TRAVIS_REPO_SLUG}.git"
11+
12+
cd kubernetes/images/web
13+
docker build --build-arg COMMIT_HASH=$TRAVIS_COMMIT --build-arg BRANCH=$DEPLOY_BRANCH --build-arg REPOSITORY=$REPOSITORY --no-cache -t eventyay/api-server:$TRAVIS_COMMIT .
14+
docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD"
15+
docker tag eventyay/api-server:$TRAVIS_COMMIT eventyay/api-server:latest
16+
docker push eventyay/api-server

requirements/common.txt

+1
Original file line numberDiff line numberDiff line change
@@ -54,3 +54,4 @@ flask-redis
5454
SQLAlchemy==1.1.15 # 1.2.0 doesn't work, check if any future versions work
5555
Flask-Elasticsearch
5656
paypalrestsdk
57+
eventlet

scripts/container_start.sh

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
#!/bin/sh
2+
export DEPLOYMENT=${DEPLOYMENT:-api}
3+
4+
echo "[LOG] Deploying ${DEPLOYMENT}"
5+
echo "[LOG] Using database: ${DATABASE_URL}"
6+
echo "[LOG] Using redis: ${REDIS_URL}"
7+
8+
if [ "$DEPLOYMENT" == "api" ]
9+
then
10+
echo "[LOG] Preparing database"
11+
python manage.py prepare_kubernetes_db
12+
echo "[LOG] Running migrations"
13+
python manage.py db upgrade
14+
export PORT=${PORT:-8080}
15+
echo "[LOG] Starting gunicorn on port ${PORT}"
16+
gunicorn -b 0.0.0.0:${PORT} app:app -w 1 --enable-stdio-inheritance --log-level "warning" --proxy-protocol
17+
fi
18+
if [ "$DEPLOYMENT" == "celery" ]
19+
then
20+
echo "[LOG] Starting celery worker"
21+
export INTEGRATE_SOCKETIO=false
22+
celery worker -A app.celery --loglevel=warning
23+
fi

scripts/docker_run.sh

-5
This file was deleted.

0 commit comments

Comments
 (0)