From ec0a3aa07050a6933d239e64eb7631a64e84d1ff Mon Sep 17 00:00:00 2001 From: Youe Graillot Date: Sun, 17 Oct 2021 14:21:42 +0000 Subject: [PATCH] Fix docker image and docker image test (#852) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Github Action build and push to dockerhub * CI updates docker description * Convert rst readme to markdown * Update CONTRIBUTORS * Revert "CI updates docker description" This reverts commit 33e2e7b5c2d336fb7ddbd7a1e7822abbbd0f0a5f. * Revert "Convert rst readme to markdown" This reverts commit dc25f8dbe49093bf9e2dddc4ecc4193cbbb1e07f. * CI deploy on master branch * CI test image * Fix empty SESSION_COOKIE_SECURE * Dockerfile : sanitize ENV * entrypoint.sh : sort * docker-compose.yml * CI test with docker compose * CI reorganize * Default SESSION_COOKIE_SECURE to True * Add some comments for readability. Co-authored-by: Alexis Métaireau --- .github/workflows/dockerhub.yml | 18 ++++++++++++++++-- Dockerfile | 25 +++++++++++++------------ conf/entrypoint.sh | 24 ++++++++++++------------ docker-compose.test.yml | 13 +++++++++++++ docker-compose.yml | 28 ++++++++++++++++++++++++++++ 5 files changed, 82 insertions(+), 26 deletions(-) create mode 100644 docker-compose.test.yml create mode 100644 docker-compose.yml diff --git a/.github/workflows/dockerhub.yml b/.github/workflows/dockerhub.yml index 7577b7fc..84370d1a 100644 --- a/.github/workflows/dockerhub.yml +++ b/.github/workflows/dockerhub.yml @@ -2,12 +2,26 @@ name: CI to Docker Hub on: push: - tags: - - '*' + tags: ['*'] + branches: [ master ] + pull_request: + branches: [ master ] + jobs: + test: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Test image # Checks we are able to run the container. + run: docker compose -f docker-compose.test.yml run sut + build: runs-on: ubuntu-latest + needs: test + if: github.event_name != 'pull_request' steps: - name: Checkout uses: actions/checkout@v2 diff --git a/Dockerfile b/Dockerfile index 7001eebe..da235d86 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,22 +1,23 @@ FROM python:3.7-alpine ENV DEBUG="False" \ - SQLALCHEMY_DATABASE_URI="sqlite:////database/ihatemoney.db" \ - SQLALCHEMY_TRACK_MODIFICATIONS="False" \ - SECRET_KEY="tralala" \ - MAIL_DEFAULT_SENDER="('Budget manager', 'budget@notmyidea.org')" \ - MAIL_SERVER="localhost" \ - MAIL_PORT=25 \ - MAIL_USE_TLS=False \ - MAIL_USE_SSL=False \ - MAIL_USERNAME= \ - MAIL_PASSWORD= \ + ACTIVATE_ADMIN_DASHBOARD="False" \ ACTIVATE_DEMO_PROJECT="True" \ ADMIN_PASSWORD="" \ ALLOW_PUBLIC_PROJECT_CREATION="True" \ - ACTIVATE_ADMIN_DASHBOARD="False" \ BABEL_DEFAULT_TIMEZONE="UTC" \ - GREENLET_TEST_CPP="no" + GREENLET_TEST_CPP="no" \ + MAIL_DEFAULT_SENDER="('Budget manager', 'budget@notmyidea.org')" \ + MAIL_PASSWORD="" \ + MAIL_PORT="25" \ + MAIL_SERVER="localhost" \ + MAIL_USE_SSL="False" \ + MAIL_USE_TLS="False" \ + MAIL_USERNAME="" \ + SECRET_KEY="tralala" \ + SESSION_COOKIE_SECURE="True" \ + SQLALCHEMY_DATABASE_URI="sqlite:////database/ihatemoney.db" \ + SQLALCHEMY_TRACK_MODIFICATIONS="False" RUN mkdir -p /etc/ihatemoney &&\ pip install --no-cache-dir gunicorn pymysql; diff --git a/conf/entrypoint.sh b/conf/entrypoint.sh index e66ad7c8..0f506bd9 100755 --- a/conf/entrypoint.sh +++ b/conf/entrypoint.sh @@ -5,23 +5,23 @@ set -e cat < /etc/ihatemoney/ihatemoney.cfg DEBUG = $DEBUG -SQLALCHEMY_DATABASE_URI = "$SQLALCHEMY_DATABASE_URI" -SQLACHEMY_DEBUG = DEBUG -SQLALCHEMY_TRACK_MODIFICATIONS = $SQLALCHEMY_TRACK_MODIFICATIONS -SECRET_KEY = "$SECRET_KEY" -MAIL_SERVER = "$MAIL_SERVER" -MAIL_PORT = $MAIL_PORT -MAIL_USE_TLS = $MAIL_USE_TLS -MAIL_USE_SSL = $MAIL_USE_SSL -MAIL_USERNAME = "$MAIL_USERNAME" -MAIL_PASSWORD = "$MAIL_PASSWORD" -MAIL_DEFAULT_SENDER = "$MAIL_DEFAULT_SENDER" +ACTIVATE_ADMIN_DASHBOARD = $ACTIVATE_ADMIN_DASHBOARD ACTIVATE_DEMO_PROJECT = $ACTIVATE_DEMO_PROJECT ADMIN_PASSWORD = '$ADMIN_PASSWORD' ALLOW_PUBLIC_PROJECT_CREATION = $ALLOW_PUBLIC_PROJECT_CREATION -ACTIVATE_ADMIN_DASHBOARD = $ACTIVATE_ADMIN_DASHBOARD BABEL_DEFAULT_TIMEZONE = "$BABEL_DEFAULT_TIMEZONE" +MAIL_DEFAULT_SENDER = "$MAIL_DEFAULT_SENDER" +MAIL_PASSWORD = "$MAIL_PASSWORD" +MAIL_PORT = $MAIL_PORT +MAIL_SERVER = "$MAIL_SERVER" +MAIL_USE_SSL = $MAIL_USE_SSL +MAIL_USE_TLS = $MAIL_USE_TLS +MAIL_USERNAME = "$MAIL_USERNAME" +SECRET_KEY = "$SECRET_KEY" SESSION_COOKIE_SECURE = $SESSION_COOKIE_SECURE +SQLACHEMY_DEBUG = DEBUG +SQLALCHEMY_DATABASE_URI = "$SQLALCHEMY_DATABASE_URI" +SQLALCHEMY_TRACK_MODIFICATIONS = $SQLALCHEMY_TRACK_MODIFICATIONS EOF # Start gunicorn without forking diff --git a/docker-compose.test.yml b/docker-compose.test.yml new file mode 100644 index 00000000..818c3b16 --- /dev/null +++ b/docker-compose.test.yml @@ -0,0 +1,13 @@ +# This is used by Github actions to ensure docker images build properly. +version: "3.9" + +services: + ihatemoney: + build: . + ports: + - "8000:8000" + sut: + image: alpine + command: wget --spider ihatemoney:8000 + depends_on: + - ihatemoney diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 00000000..22b54e34 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,28 @@ +# This is an example. Please change the configuration variables listed here. + +version: "3.9" + +services: + ihatemoney: + build: . + environment: + - DEBUG=False + - ACTIVATE_ADMIN_DASHBOARD=False + - ACTIVATE_DEMO_PROJECT=True + - ADMIN_PASSWORD= + - ALLOW_PUBLIC_PROJECT_CREATION=True + - BABEL_DEFAULT_TIMEZONE=UTC + - GREENLET_TEST_CPP=no + - MAIL_DEFAULT_SENDER=('Budget manager', 'budget@notmyidea.org') + - MAIL_PASSWORD= + - MAIL_PORT=25 + - MAIL_SERVER=localhost + - MAIL_USE_SSL=False + - MAIL_USE_TLS=False + - MAIL_USERNAME= + - SECRET_KEY=tralala + - SESSION_COOKIE_SECURE=True + - SQLALCHEMY_DATABASE_URI=sqlite:////database/ihatemoney.db + - SQLALCHEMY_TRACK_MODIFICATIONS=False + ports: + - "8000:8000"