Quellcode durchsuchen

Move docker stuff in dedicated repo (https://github.com/tracim/docker_tracim.git)

Bastien Sevajol vor 7 Jahren
Ursprung
Commit
e56fd639a3

+ 0 - 78
README.md Datei anzeigen

@@ -446,84 +446,6 @@ Example of Apache WSGI configuration. This configuration refers to productionapp
446 446
         LogLevel debug
447 447
     </VirtualHost>
448 448
 
449
-## Docker
450
-
451
-### Build images
452
-
453
-To build tests designed image
454
-
455
-    docker build -t tracim:tests docker/Debian_Tests
456
-
457
-To build Prod/dev designed image
458
-
459
-    docker build -t tracim:latest docker/Debian_Uwsgi
460
-
461
-### Run containers
462
-
463
-#### Run tests containers
464
-
465
-Run tests with PostgreSQL
466
-
467
-    docker run -e TEST_DATABASE_ENGINE=postgresql tracim:tests
468
-
469
-Run tests with MySQL
470
-
471
-    docker run -e TEST_DATABASE_ENGINE=mysql tracim:tests
472
-
473
-Run tests with SQLite
474
-
475
-    docker run -e TEST_DATABASE_ENGINE=sqlite tracim:tests
476
-
477
-##### Run test on specific commit/branch
478
-
479
-To run tests on specific branch or commit, use ``CHECKOUT`` parameter, eg:
480
-
481
-    docker run -e TEST_DATABASE_ENGINE=postgresql -e CHECKOUT=<branch_or_commit_name> tracim:tests
482
-
483
-##### Other parameters (environment variables)
484
-
485
-* FETCH: (0 or 1) Apply a ``git fetch origin`` on tracim repository
486
-* PULL: (0 or 1) Apply a ``git pull origin master`` on tracim repository to set tracim on latest master branch
487
-
488
-#### Run Prod/dev containers
489
-
490
-Environment variables are:
491
-
492
-* PULL (0 or 1): If 1, upgrade tracim at startup
493
-* DATABASE_TYPE (values: postgresql, mysql, sqlite)
494
-
495
-If DATABASE_TYPE is `postgresql` or `mysql`, please set these variables:
496
-
497
-* DATABASE_USER
498
-* DATABASE_PASSWORD
499
-* DATABASE_HOST
500
-* DATABASE_PORT
501
-* DATABASE_NAME
502
-
503
-Volumes are:
504
-
505
-* /etc/tracim
506
-* /var/tracim (used for SQLite database and radicale)
507
-
508
-Ports are:
509
-
510
-* 80 (industracim web interface)
511
-
512
-To run tracim container with MySQL or PostgreSQL, you must set environment ``DATABASE_USER, DATABASE_PASSWORD, DATABASE_HOST, DATABASE_PORT, DATABASE_NAME`` variable.
513
-Example with PostgreSQL:
514
-
515
-    docker run -e DATABASE_TYPE=postgresql -e DATABASE_USER=tracim -e DATABASE_PASSWORD=tracim -e DATABASE_HOST=192.168.1.2 -e DATABASE_NAME=tracim -p 80:80 -v /tmp/tracim:/etc/tracim tracim:latest
516
-
517
-Example with MySQL
518
-
519
-    docker run -e DATABASE_TYPE=mysql -e DATABASE_USER=tracim -e DATABASE_PASSWORD=tracim -e DATABASE_HOST=192.168.1.2 -e DATABASE_NAME=tracim -p 80:80 -v /tmp/tracim:/etc/tracim tracim:latest
520
-
521
-Example with SQLite
522
-
523
-    docker run -e DATABASE_TYPE=sqlite -p 80:80 -v /tmp/tracim:/etc/tracimetc -v /tmp/tracimvar:/var/tracim tracim:latest
524
-
525
-After execute one of these command, tracim will be available on your system on port 80.
526
-
527 449
 # Support and Community #
528 450
 
529 451
 Building the community is a work in progress.

+ 0 - 52
docker/Debian_Tests/Dockerfile Datei anzeigen

@@ -1,52 +0,0 @@
1
-FROM debian:jessie
2
-MAINTAINER contact@algoo.fr
3
-
4
-# TODO: See GOOD PRATICE (remove apt lists, cache, etc)
5
-
6
-# Install required packages
7
-RUN apt-get update -q \
8
-    && DEBIAN_FRONTEND=noninteractive apt-get install -yq --no-install-recommends \
9
-      git \
10
-      locales \
11
-      realpath \
12
-      python3 \
13
-      python3-dev \
14
-      python3-pip \
15
-      build-essential \
16
-      libxml2-dev \
17
-      libxslt1-dev \
18
-      python-lxml \
19
-      postgresql-server-dev-all \
20
-      postgresql \
21
-      postgresql-client \
22
-      uwsgi \
23
-      uwsgi-plugin-python3 \
24
-      postgresql-server-dev-all \
25
-      postgresql \
26
-      postgresql-client \
27
-      mysql-server \
28
-      mysql-client \
29
-      libmysqlclient-dev \
30
-      sqlite3 \
31
-      default-jdk
32
-
33
-# Ensure UTF-8
34
-RUN locale-gen en_US.UTF-8 en_us \
35
-    && dpkg-reconfigure locales \
36
-    && locale-gen C.UTF-8 \
37
-    && /usr/sbin/update-locale LANG=C.UTF-8
38
-ENV LANG C.UTF-8
39
-ENV LANGUAGE C.UTF-8
40
-ENV LC_ALL C.UTF-8
41
-
42
-# Download and install Tracim
43
-RUN git clone https://github.com/tracim/tracim.git \
44
-     && cd /tracim/tracim \
45
-     && python3 setup.py develop \
46
-     && cd /tracim \
47
-     && pip3 install -r install/requirements.txt \
48
-     && pip3 install https://launchpad.net/oursql/py3k/py3k-0.9.4/+download/oursql-0.9.4.zip \
49
-     && echo 20161216001
50
-
51
-COPY entrypoint.sh /tracim/entrypoint.sh
52
-CMD ["/tracim/entrypoint.sh"]

+ 0 - 74
docker/Debian_Tests/entrypoint.sh Datei anzeigen

@@ -1,74 +0,0 @@
1
-#!/usr/bin/env bash
2
-
3
-#
4
-# ENVIRONMENT VARIABLES ARE:
5
-#
6
-# * TEST_DATABASE_ENGINE (values: postgresql, mysql, sqlite)
7
-# * CHECKOUT (values: a commit or branch name)
8
-# * PULL (values: 0 or 1)
9
-# * FETCH (values: 0 or 1)
10
-#
11
-
12
-# Default values
13
-FETCH=${FETCH:=1}
14
-PULL=${PULL:=1}
15
-
16
-# If PULL is set, change repository HEAD
17
-if [ "$FETCH" = 1 ]; then
18
-    cd /tracim && git fetch origin
19
-fi
20
-
21
-
22
-# If PULL is set, change repository HEAD
23
-if [ "$PULL" = 1 ]; then
24
-    cd /tracim && git pull origin master
25
-fi
26
-
27
-# If CHECKOUT is set, change repository HEAD
28
-if [ -n "$CHECKOUT" ]; then
29
-    cd /tracim && git checkout ${CHECKOUT}
30
-    echo "CHECKOUT set to $CHECKOUT"
31
-fi
32
-
33
-# Ensure TEST_DATABASE_ENGINE is set
34
-if ! [ -n "$TEST_DATABASE_ENGINE" ]; then
35
-    echo "You must set TEST_DATABASE_ENGINE environment variable"
36
-    exit 1
37
-fi
38
-
39
-# Ensure TEST_DATABASE_ENGINE value
40
-case "$TEST_DATABASE_ENGINE" in
41
-    postgresql|mysql|sqlite) ;;
42
-    *) echo "TEST_DATABASE_ENGINE environment variable must be one of these: \
43
-postgresql, mysql, sqlite" ; exit 1 ;;
44
-esac
45
-
46
-# Prepare config files
47
-cp /tracim/tracim/development.ini.base /tracim/tracim/development.ini
48
-cp /tracim/tracim/wsgidav.conf.sample /tracim/tracim/wsgidav.conf
49
-
50
-# PostgreSQL case
51
-if [ "$TEST_DATABASE_ENGINE" = postgresql ] ; then
52
-    service postgresql start
53
-    su - postgres -s /bin/bash -c "psql -c \"CREATE DATABASE tracim;\""
54
-    su - postgres -s /bin/bash -c "psql -c \"ALTER USER postgres WITH PASSWORD 'dummy';\""
55
-    sed -i "s/\(sqlalchemy.url *= *\).*/\sqlalchemy.url = postgresql:\/\/postgres:dummy@127.0.0.1:5432\/tracim?client_encoding=utf8/" /tracim/tracim/test.ini
56
-    sed -i "s/\(sqlalchemy.url *= *\).*/\sqlalchemy.url = postgresql:\/\/postgres:dummy@127.0.0.1:5432\/tracim?client_encoding=utf8/" /tracim/tracim/development.ini
57
-fi
58
-
59
-# MySQL case
60
-if [ "$TEST_DATABASE_ENGINE" = mysql ] ; then
61
-    service mysql start
62
-    mysql -e 'CREATE DATABASE tracim;'
63
-    sed -i "s/\(sqlalchemy.url *= *\).*/\sqlalchemy.url = mysql+oursql:\/\/root@localhost\/tracim/" /tracim/tracim/test.ini
64
-    sed -i "s/\(sqlalchemy.url *= *\).*/\sqlalchemy.url = mysql+oursql:\/\/root@localhost\/tracim/" /tracim/tracim/development.ini
65
-fi
66
-
67
-# SQLite case
68
-if [ "$TEST_DATABASE_ENGINE" = sqlite ] ; then
69
-    sed -i "s/\(sqlalchemy.url *= *\).*/\sqlalchemy.url = sqlite:\/\/\/tracim.sqlite/" /tracim/tracim/test.ini
70
-    sed -i "s/\(sqlalchemy.url *= *\).*/\sqlalchemy.url = sqlite:\/\/\/tracim.sqlite/" /tracim/tracim/development.ini
71
-fi
72
-
73
-# Run tests
74
-cd /tracim/tracim && nosetests -c /tracim/tracim/test.ini -v

+ 0 - 69
docker/Debian_Uwsgi/Dockerfile Datei anzeigen

@@ -1,69 +0,0 @@
1
-FROM debian:jessie
2
-MAINTAINER contact@algoo.fr
3
-
4
-# TODO: See GOOD PRATICE (remove apt lists, cache, etc)
5
-
6
-# Install required packages
7
-RUN apt-get update -q \
8
-    && DEBIAN_FRONTEND=noninteractive apt-get install -yq --no-install-recommends \
9
-      git \
10
-      locales \
11
-      realpath \
12
-      python3 \
13
-      python3-dev \
14
-      python3-pip \
15
-      build-essential \
16
-      libxml2-dev \
17
-      libxslt1-dev \
18
-      python-lxml \
19
-      postgresql-server-dev-all \
20
-      postgresql \
21
-      postgresql-client \
22
-      uwsgi \
23
-      uwsgi-plugin-python3 \
24
-      mysql-client \
25
-      libmysqld-dev \
26
-      sqlite3 \
27
-      nginx \
28
-      redis-server
29
-
30
-# Ensure UTF-8
31
-RUN locale-gen en_US.UTF-8 en_us \
32
-    && dpkg-reconfigure locales \
33
-    && locale-gen C.UTF-8 \
34
-    && /usr/sbin/update-locale LANG=C.UTF-8
35
-ENV LANG C.UTF-8
36
-ENV LANGUAGE C.UTF-8
37
-ENV LC_ALL C.UTF-8
38
-
39
-# Download and install Tracim
40
-RUN git clone https://github.com/tracim/tracim.git \
41
-     && cd /tracim/tracim \
42
-     && python3 setup.py develop \
43
-     && cd /tracim \
44
-     && pip3 install -r install/requirements.txt\
45
-     && pip3 install https://launchpad.net/oursql/py3k/py3k-0.9.4/+download/oursql-0.9.4.zip \
46
-     && echo 20161216001
47
-
48
-# Prepare volumes
49
-RUN mkdir /etc/tracim \
50
-    && mkdir /var/tracim \
51
-    && mkdir /var/tracim/logs \
52
-    && mkdir /var/tracim/assets
53
-VOLUME ["/etc/tracim", "/var/tracim"]
54
-
55
-COPY uwsgi.ini /etc/tracim/uwsgi.ini
56
-COPY nginx.conf /etc/tracim/nginx.conf
57
-COPY wsgi.py /tracim/tracim/wsgi.py
58
-COPY check_env_vars.sh /tracim/check_env_vars.sh
59
-COPY entrypoint.sh /tracim/entrypoint.sh
60
-
61
-RUN ln -s /etc/tracim/uwsgi.ini /etc/uwsgi/apps-available/tracim.ini && \
62
-    ln -s /etc/uwsgi/apps-available/tracim.ini /etc/uwsgi/apps-enabled/tracim.ini && \
63
-    ln -s /etc/tracim/nginx.conf /etc/nginx/sites-available/tracim.conf && \
64
-    ln -s /etc/nginx/sites-available/tracim.conf /etc/nginx/sites-enabled/tracim.conf && \
65
-    chown root:www-data -R /var/tracim/logs && \
66
-    chmod 775 -R /var/tracim/logs && \
67
-    rm /etc/nginx/sites-enabled/default
68
-
69
-CMD ["/tracim/entrypoint.sh"]

+ 0 - 40
docker/Debian_Uwsgi/check_env_vars.sh Datei anzeigen

@@ -1,40 +0,0 @@
1
-#!/usr/bin/env bash
2
-
3
-# Ensure DATABASE_TYPE is set
4
-if ! [ -n "$DATABASE_TYPE" ]; then
5
-    echo "You must set DATABASE_TYPE environment variable"
6
-    exit 1
7
-fi
8
-
9
-if ! [ "$DATABASE_TYPE" = sqlite ]; then
10
-    # Ensure DATABASE_USER is set
11
-    if ! [ -n "$DATABASE_USER" ]; then
12
-        echo "You must set DATABASE_USER environment variable"
13
-        exit 1
14
-    fi
15
-
16
-    # Ensure DATABASE_PASSWORD is set
17
-    if ! [ -n "$DATABASE_PASSWORD" ]; then
18
-        echo "You must set DATABASE_PASSWORD environment variable"
19
-        exit 1
20
-    fi
21
-
22
-    # Ensure DATABASE_HOST is set
23
-    if ! [ -n "$DATABASE_HOST" ]; then
24
-        echo "You must set DATABASE_HOST environment variable"
25
-        exit 1
26
-    fi
27
-
28
-    # Ensure DATABASE_NAME is set
29
-    if ! [ -n "$DATABASE_NAME" ]; then
30
-        echo "You must set DATABASE_NAME environment variable"
31
-        exit 1
32
-    fi
33
-
34
-    # Ensure DATABASE_TYPE value
35
-    case "$DATABASE_TYPE" in
36
-        postgresql|mysql|sqlite) ;;
37
-        *) echo "DATABASE_TYPE environment variable must be one of these: \
38
-    postgresql, mysql, sqlite" ;;
39
-    esac
40
-fi

+ 0 - 125
docker/Debian_Uwsgi/entrypoint.sh Datei anzeigen

@@ -1,125 +0,0 @@
1
-#!/usr/bin/env bash
2
-
3
-#
4
-# ENVIRONMENT VARIABLES ARE:
5
-#
6
-# * DATABASE_TYPE (values: postgresql, mysql, sqlite)
7
-# * DATABASE_USER
8
-# * DATABASE_PASSWORD
9
-# * DATABASE_HOST
10
-# * DATABASE_PORT
11
-# * DATABASE_NAME
12
-# * PULL
13
-#
14
-
15
-# Default values
16
-# TODO: Voir avec Damien si c'est le comportement souhaité
17
-PULL=${PULL:=1}
18
-CONFIG_FILE_IS_NEW=0
19
-
20
-# Check environment variables
21
-/tracim/check_env_vars.sh
22
-if [ ! "$?" = 0 ]; then
23
-    exit 1
24
-fi
25
-
26
-# If PULL is set, change repository HEAD
27
-if [ "$PULL" = 1 ]; then
28
-    echo "Upgrade Tracim code"
29
-    cd /tracim && git pull origin master
30
-fi
31
-
32
-# Create config.ini file if no exist
33
-if [ ! -f /etc/tracim/config.ini ]; then
34
-    CONFIG_FILE_IS_NEW=1
35
-    cp /tracim/tracim/development.ini.base /etc/tracim/config.ini
36
-fi
37
-ln -sf /etc/tracim/config.ini /tracim/tracim/config.ini
38
-
39
-# Create wsgidav.conf file if no exist
40
-if [ ! -f /etc/tracim/wsgidav.conf ]; then
41
-    cp /tracim/tracim/wsgidav.conf.sample /etc/tracim/wsgidav.conf
42
-fi
43
-ln -sf /etc/tracim/wsgidav.conf /tracim/tracim/wsgidav.conf
44
-
45
-# MySQL case
46
-if [ "$DATABASE_TYPE" = mysql ] ; then
47
-    # Ensure DATABASE_PORT is set
48
-    if ! [ -n "$DATABASE_PORT" ]; then
49
-        DATABASE_PORT=3306
50
-    fi
51
-    # engine is mysql+oursql
52
-    DATABASE_TYPE=mysql+oursql
53
-
54
-    # Check if database must be init
55
-    TEST_TABLE=$(mysql --host="$DATABASE_HOST" --user="$DATABASE_USER" --password="$DATABASE_USER" --database="$DATABASE_NAME" -s -N --execute="SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = '$DATABASE_NAME' AND table_name = 'content';")
56
-    if [ ${TEST_TABLE} = 0 ] ; then
57
-        INIT_DATABASE=true
58
-    fi
59
-fi
60
-
61
-# PostgreSQL case
62
-if [ "$DATABASE_TYPE" = postgresql ] ; then
63
-    # Ensure DATABASE_PORT is set
64
-    if ! [ -n "$DATABASE_PORT" ]; then
65
-        DATABASE_PORT=5432
66
-    fi
67
-    DATABASE_SUFFIX="?client_encoding=utf8"
68
-
69
-    # Check if database must be init
70
-    TEST_TABLE=$(PGPASSWORD="$DATABASE_PASSWORD" psql -U ${DATABASE_USER} -h ${TEST_TABLE} -d ${DATABASE_NAME} -t -c "SELECT EXISTS (SELECT 1 FROM information_schema.tables WHERE table_schema = 'public' AND table_name = 'content' );")
71
-    if [ ${TEST_TABLE} = f ] ; then
72
-        INIT_DATABASE=true
73
-    fi
74
-fi
75
-
76
-# SQLite case
77
-if [ "$DATABASE_TYPE" = sqlite ] ; then
78
-    if [ ! -f /var/tracim/tracim.db ]; then
79
-        INIT_DATABASE=true
80
-    fi
81
-fi
82
-
83
-# Some configs are require if it's a fresh config file
84
-if [ "$CONFIG_FILE_IS_NEW" = 1 ] ; then
85
-    # Update radicale file system folder config
86
-    sed -i "s/\(# radicale.server.filesystem.folder *= *\).*/radicale.server.filesystem.folder = \/var\/tracim\/radicale/" /etc/tracim/config.ini
87
-    # Update secret
88
-    # TODO: test it
89
-    SECRET=$(python -c "import uuid; print(str(uuid.uuid4()))")
90
-    sed -i "s/\(cookie_secret *= *\).*/cookie_secret = $SECRET/" /etc/tracim/config.ini
91
-    sed -i "s/\(beaker.session.secret *= *\).*/beaker.session.secret = $SECRET/" /etc/tracim/config.ini
92
-    sed -i "s/\(beaker.session.validate_key *= *\).*/beaker.session.validate_key = $SECRET/" /etc/tracim/config.ini
93
-fi
94
-
95
-# Update sqlalchemy.url config
96
-if ! [ "$DATABASE_TYPE" = sqlite ] ; then
97
-    sed -i "s/\(sqlalchemy.url *= *\).*/\\sqlalchemy.url = $DATABASE_TYPE:\/\/$DATABASE_USER:$DATABASE_PASSWORD@$DATABASE_HOST:$DATABASE_PORT\/$DATABASE_NAME$DATABASE_SUFFIX/" /etc/tracim/config.ini
98
-else
99
-    sed -i "s/\(sqlalchemy.url *= *\).*/\\sqlalchemy.url = sqlite:\/\/\/\/var\/tracim\/tracim.db/" /etc/tracim/config.ini
100
-fi
101
-
102
-# Start redis server (for async email sending if configured)
103
-service redis-server start
104
-
105
-# Initialize database if needed
106
-if [ "$INIT_DATABASE" = true ] ; then
107
-    cd /tracim/tracim/ && gearbox setup-app -c config.ini
108
-fi
109
-
110
-# Upgrade database
111
-if [ "$PULL" = 1 ]; then
112
-    echo "Upgrade Tracim database if required"
113
-    cd /tracim/tracim/ && gearbox migrate upgrade
114
-fi
115
-
116
-service nginx start
117
-
118
-ln -sf /var/log/uwsgi/app/tracim.log /var/tracim/logs/uwsgi.log
119
-ln -sf /var/log/nginx/access.log /var/tracim/logs/nginx-access.log
120
-ln -sf /var/log/nginx/error.log /var/tracim/logs/nginx-error.log
121
-mkdir -p /var/run/uwsgi/app/tracim/
122
-chown www-data:www-data -R /var/run/uwsgi
123
-chown www-data:www-data -R /var/tracim
124
-
125
-uwsgi -i /etc/uwsgi/apps-available/tracim.ini --uid www-data --gid www-data

+ 0 - 53
docker/Debian_Uwsgi/nginx.conf Datei anzeigen

@@ -1,53 +0,0 @@
1
-server {
2
-    listen 80 default_server;
3
-    server_name _;
4
-    charset     utf-8;
5
-
6
-    client_max_body_size 75M;
7
-
8
-    location /caldav {
9
-        proxy_pass http://127.0.0.1:5232;
10
-        proxy_set_header Host $http_host;
11
-    }
12
-
13
-    location /webdav {
14
-        proxy_pass http://127.0.0.1:3030;
15
-        proxy_set_header Host $http_host;
16
-    }
17
-
18
-    location /favicon.ico {
19
-        alias /tracim/tracim/tracim/public/favicon.ico;
20
-    }
21
-
22
-    location /assets {
23
-        root /tracim/tracim/tracim/public;
24
-        try_files $uri @default_assets;
25
-    }
26
-
27
-    location @default_assets {
28
-        root /var/tracim;
29
-    }
30
-
31
-    location / {
32
-        uwsgi_pass  unix:/var/run/uwsgi/app/tracim/socket;
33
-
34
-        # Give HTTP info to uwsgi/python
35
-        uwsgi_param  SCRIPT_NAME        '';
36
-        uwsgi_param  QUERY_STRING       $query_string;
37
-        uwsgi_param  REQUEST_METHOD     $request_method;
38
-        uwsgi_param  CONTENT_TYPE       $content_type;
39
-        uwsgi_param  CONTENT_LENGTH     $content_length;
40
-
41
-        uwsgi_param  REQUEST_URI        $request_uri;
42
-        uwsgi_param  PATH_INFO          $document_uri;
43
-        uwsgi_param  DOCUMENT_ROOT      $document_root;
44
-        uwsgi_param  SERVER_PROTOCOL    $server_protocol;
45
-        uwsgi_param  REQUEST_SCHEME     $scheme;
46
-        uwsgi_param  HTTPS              $https if_not_empty;
47
-
48
-        uwsgi_param  REMOTE_ADDR        $remote_addr;
49
-        uwsgi_param  REMOTE_PORT        $remote_port;
50
-        uwsgi_param  SERVER_PORT        $server_port;
51
-        uwsgi_param  SERVER_NAME        $server_name;
52
-    }
53
-}

+ 0 - 7
docker/Debian_Uwsgi/uwsgi.ini Datei anzeigen

@@ -1,7 +0,0 @@
1
-[uwsgi]
2
-plugins = python3
3
-chdir = /tracim/tracim
4
-module = wsgi
5
-callable = application
6
-enable-threads = true
7
-socket = /var/run/uwsgi/app/tracim/socket

+ 0 - 12
docker/Debian_Uwsgi/wsgi.py Datei anzeigen

@@ -1,12 +0,0 @@
1
-# -*- coding: utf-8 -*-
2
-
3
-APP_CONFIG = '{{ instance.tracim_config_file_path }}'
4
-
5
-# Setup logging
6
-import logging
7
-import logging.config
8
-logging.config.fileConfig('/tracim/tracim/config.ini')
9
-
10
-from paste.deploy import loadapp
11
-application = loadapp('config:/tracim/tracim/config.ini')
12
-application.debug = False