diff --git a/deploy/Dockerfile-crossbar b/deploy/Dockerfile similarity index 86% rename from deploy/Dockerfile-crossbar rename to deploy/Dockerfile index ca3fe41..9b61deb 100644 --- a/deploy/Dockerfile-crossbar +++ b/deploy/Dockerfile @@ -24,10 +24,7 @@ RUN mkdir /code WORKDIR /code ADD requirements.txt /code/ RUN pip3 install -r requirements.txt -RUN mkdir /crossbar -ADD crossbar.config.json /crossbar/config.json -ADD ssl/server.cert.pem /crossbar/ -ADD ssl/server.key.pem /crossbar/ + diff --git a/deploy/Dockerfile-app b/deploy/Dockerfile-app index 6ff8705..37d36b5 100644 --- a/deploy/Dockerfile-app +++ b/deploy/Dockerfile-app @@ -2,17 +2,8 @@ FROM mbs2-ubuntu MAINTAINER ivan -RUN wget http://nginx.org/keys/nginx_signing.key &&\ - apt-key add nginx_signing.key &&\ - echo "deb http://nginx.org/packages/ubuntu/ `lsb_release -cs` nginx" >> /etc/apt/sources.list.d/nginx.list &&\ - apt-get update &&\ - apt-get install -y nginx &&\ - pip3 install uwsgi +RUN pip3 install uwsgi -ADD nginx.conf /etc/nginx/conf.d/default.conf -RUN mkdir /etc/nginx/ssl -ADD ssl/server.key.pem /etc/nginx/ssl/ -ADD ssl/server.cert.pem /etc/nginx/ssl/ ADD uwsgi.ini /etc/ ADD run_app.sh / ADD loop.sh / diff --git a/deploy/Dockerfile-nginx b/deploy/Dockerfile-nginx new file mode 100644 index 0000000..6ff8705 --- /dev/null +++ b/deploy/Dockerfile-nginx @@ -0,0 +1,21 @@ +FROM mbs2-ubuntu + +MAINTAINER ivan + +RUN wget http://nginx.org/keys/nginx_signing.key &&\ + apt-key add nginx_signing.key &&\ + echo "deb http://nginx.org/packages/ubuntu/ `lsb_release -cs` nginx" >> /etc/apt/sources.list.d/nginx.list &&\ + apt-get update &&\ + apt-get install -y nginx &&\ + pip3 install uwsgi + +ADD nginx.conf /etc/nginx/conf.d/default.conf +RUN mkdir /etc/nginx/ssl +ADD ssl/server.key.pem /etc/nginx/ssl/ +ADD ssl/server.cert.pem /etc/nginx/ssl/ +ADD uwsgi.ini /etc/ +ADD run_app.sh / +ADD loop.sh / + +WORKDIR /code + diff --git a/deploy/crossbar.config.json b/deploy/crossbar.config.json deleted file mode 100644 index 0c48d5f..0000000 --- a/deploy/crossbar.config.json +++ /dev/null @@ -1,122 +0,0 @@ -{ - "version": 2, - "workers": [ - { - "type": "router", - "realms": [ - { - "name": "realm1", - "roles": [ - { - "name": "anonymous", - "permissions": [ - { - "uri": "", - "match": "prefix", - "allow": { - "call": false, - "register": false, - "publish": false, - "subscribe": false - }, - "disclose": { - "caller": false, - "publisher": false - }, - "cache": true - } - ] - }, - - { - "name": "user", - "permissions": [ - { - "uri": "", - "match": "prefix", - "allow": { - "call": true, - "register": false, - "publish": true, - "subscribe": true - }, - "disclose": { - "caller": true, - "publisher": false - }, - "cache": true - } - ] - }, - { - "name": "backend", - "permissions": [ - { - "uri": "", - "match": "prefix", - "allow": { - "call": true, - "register": true, - "publish": true, - "subscribe": true - }, - "disclose": { - "caller": false, - "publisher": false - }, - "cache": true - } - ] - } - ] - } - ], - "transports": [ - { - "type": "web", - "endpoint": { - "type": "tcp", - "port": 8080, - "tls": { - "key": "server.key.pem", - "certificate": "server.cert.pem" - } - }, - "paths": { - "/": { - "type": "static", - "directory": "../web" - }, - "ws": { - "type": "websocket", - "auth": { - "ticket": { - "type": "dynamic", - "authenticator": "eu.zderadicka.mybookshelf.authenticate" - } - } - } - } - - }, - - { - "type":"rawsocket", - "endpoint": { - "type":"tcp", - "port": 9080 - }, - "max_message_size": 1048576, - "auth":{ - "anonymous": { - "type":"static", - "role":"backend" - } - - } - } - ] - } - - ] -} diff --git a/deploy/docker-compose.override.yml b/deploy/docker-compose.override.yml new file mode 100644 index 0000000..e50ad33 --- /dev/null +++ b/deploy/docker-compose.override.yml @@ -0,0 +1,8 @@ +services: + backend: + ports: + - 8080:8080 + +volumes: + code: + external: false \ No newline at end of file diff --git a/deploy/docker-compose.yml b/deploy/docker-compose.yml index d953832..aa01825 100644 --- a/deploy/docker-compose.yml +++ b/deploy/docker-compose.yml @@ -6,34 +6,17 @@ services: dockerfile: Dockerfile-db environment: POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} - - crossbar: - build: - context: . - dockerfile: Dockerfile-crossbar - image: mbs2-ubuntu - volumes: - - ${CODE_VOLUME}:/code - ports: - - 8080:8080 - command: crossbar start --cbdir /crossbar --loglevel=info - + backend: build: context: . dockerfile: Dockerfile-backend - args: - - http_proxy - - https_proxy - - no_proxy volumes: - ${CODE_VOLUME}:/code - mbs2_data:/data depends_on: - - crossbar - db environment: - MBS2_CROSSBAR_HOST: crossbar MBS2_DB_HOST: db MBS2_DB_NAME: postgres MBS2_DATA_DIR: /data @@ -49,21 +32,17 @@ services: - mbs2_data:/data ports: - 6006:6006 - - "${MBS2_WEB_PORT}:443" depends_on: - db - - crossbar - backend environment: MBS2_DB_HOST: db MBS2_DB_NAME: postgres - MBS2_WAMP_HOST: crossbar + MBS2_DELEGATED_HOST: backend MBS2_DATA_DIR: /data MBS2_ENVIRONMENT: - MBS2_WAMP_SECURE: + volumes: mbs2_data: external: false - code: - external: true diff --git a/deploy/init.sh b/deploy/init.sh index 4268e3d..56fdf3a 100755 --- a/deploy/init.sh +++ b/deploy/init.sh @@ -1,3 +1,66 @@ #!/bin/bash -cp sample.docker.env .env -echo "Now edit .env file as needed" \ No newline at end of file + +function read_password { + +eval local existing=\$$2 +if [[ -z "$existing" ]]; then + read -p "$1" $2 + local pwd1 + read -p "Enter password again for check: " pwd1 + eval local pwd0=\$$2 + if [[ ! "$pwd1" = "$pwd0" ]]; then + echo "Passwords were different" + exit 1 + fi +fi + +} + +if [[ -z "$1" ]]; then +echo Usage: $0 [development|stage] +exit 1 +fi + +read_password "Database password: " MBS2_DB_PASSWORD + +if [[ "$1" = "development" ]]; then +cat <.env +POSTGRES_PASSWORD="$MBS2_DB_PASSWORD" +MBS2_ENVIRONMENT=development +MBS2_DEBUG=true +CODE_VOLUME=.. +EOF + + +elif [[ "$1" = "stage" ]]; then +echo "Stage environment" +exit 1 +else +echo Uknown environment +exit 1 +fi + +docker build -t mbs2-ubuntu . +read_password "Mybookshelf2 admin password: " MBS2_ADMIN_PASSWORD +docker-compose run --rm app python3 manage.py create_tables -a -c +docker-compose run --rm app python3 manage.py change_password admin -p "$MBS2_ADMIN_PASSWORD" +echo + +CLIENT_IMAGE=mbs2-client-build-image +docker build -t $CLIENT_IMAGE -f Dockerfile-build-client . +if [[ "$1" = "development" ]]; then +docker run --rm --use $(id -u):$(id -g) --name mbs2-client-watch -it -v $(pwd)/..:/code -p 9000:9000 $IMAGE /watch_client_cmd.sh +cat <