diff --git a/.gitignore b/.gitignore index 765a1e4..1ef8d84 100755 --- a/.gitignore +++ b/.gitignore @@ -134,4 +134,3 @@ pyshelf_nginx.conf .env tags TAGS -config.json diff --git a/README.md b/README.md index f72142a..cbe5467 100755 --- a/README.md +++ b/README.md @@ -78,6 +78,8 @@ From the main directory `pip install -r requirements.txt` +`./configure` + `cd src` `python manage.py makemigrations` @@ -90,10 +92,10 @@ From the main directory `cd ..` -`./configure` - `./importBooks` +`uwsgi --ini uwsgi.ini` + Browse to the site as defined in your apache | nginx config Running via the [Django](https://www.djangoproject.com/) test server might be possible, albeit not recomended. @@ -113,7 +115,7 @@ services: - "POSTGRES_USER=pyshelf" - "POSTGRES_DB=pyshelf" volumes: - - "pgdata:/var/lib/postgresql/data/" + - "db_data:/var/lib/postgresql/data/" pyshelf: image: "pyshelf/pyshelf" @@ -125,7 +127,7 @@ services: - db volumes: - pgdata: + db_data: ``` You'll also need a `.env` file wich sets the `LOCAL_BOOK_DIR` variable, for example: @@ -134,7 +136,7 @@ You'll also need a `.env` file wich sets the `LOCAL_BOOK_DIR` variable, for exam LOCAL_BOOK_DIR=/home/someone/books ``` -The Docker image is still new, so there could still be some issues and missing features. Feel free to create a bug-issue when you encounter a bug. Development of the Docker image is discussed in https://github.com/th3r00t/pyShelf/pull/53 . Currently the database needs to be [PostgreSQL](https://www.postgresql.org/) with the account details shown in the example `docker-compose.yml` . +The Docker image is still new, so there could still be some issues and missing features. Feel free to create a bug-issue when you encounter a bug. Development of the Docker image is discussed in https://github.com/th3r00t/pyShelf/pull/53 . Currently the database needs to be [PostgreSQL](https://www.postgresql.org/) with the account details shown in the example `docker-compose.yml`. It should become db agnostic in the future. ## In Progress diff --git a/config.json b/config.json old mode 100755 new mode 100644 index 99123e3..a43c162 --- a/config.json +++ b/config.json @@ -1 +1 @@ -{"TITLE": "pyShelf E-Book Server", "VERSION": "0.6.0", "BOOKPATH": "~/Books", "DB_HOST": "localhost", "DB_PORT": "5432", "DATABASE": "pyshelf", "USER": "pyshelf", "PASSWORD": "pyshelf", "BOOKSHELF": "data/shelf.json", "ALLOWED_HOSTS": "*", "SECRET": ""} +{"TITLE": "pyShelf E-Book Server", "VERSION": "0.6.0", "BOOKPATH": "~/books", "DB_HOST": "localhost", "DB_PORT": "5432", "DATABASE": "pyshelf", "USER": "pyshelf", "PASSWORD": "pyshelf", "BOOKSHELF": "data/shelf.json", "ALLOWED_HOSTS": "*", "SECRET": ""} diff --git a/docker/Dockerfile b/docker/Dockerfile index 3f39ac5..7b4a6c6 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,3 +1,14 @@ + +# This file is used to build the Dockerhub image. To host pyShelf yourself for +# production, please use the official pyShelf image on +# https://hub.docker.com/r/pyshelf/pyshelf + +# Use the following commands to build and push the docker image to Dockerhub: +# +# docker build -t pyshelf/pyshelf -f .\docker\Dockerfile . +# docker login +# docker push pyshelf/pyshelf + FROM ubuntu EXPOSE 8000 @@ -5,22 +16,27 @@ EXPOSE 8000 RUN apt-get update -y RUN DEBIAN_FRONTEND=noninteractive apt-get install -y build-essential python3 python3-dev python3-pip python3-venv nginx-full -COPY . /pyshelf - -WORKDIR /pyshelf/ -RUN python3 -m pip install -r requirements.txt +RUN DEBIAN_FRONTEND=noninteractive apt-get install -y cron +RUN echo "* * * * * cd /pyshelf/ && python3 importBooks >> /var/log/cron.log 2>&1" > import_books_scheduler.cron && crontab import_books_scheduler.cron COPY ./docker/pyshelf_nginx.conf /etc/nginx/sites-available/pyshelf_nginx.conf RUN ln -s /etc/nginx/sites-available/pyshelf_nginx.conf /etc/nginx/sites-enabled/ +COPY . /pyshelf +COPY ./docker/config.json /pyshelf/config.json + WORKDIR /pyshelf/ -ENTRYPOINT cd src/ \ +RUN python3 -m pip install -r requirements.txt + +WORKDIR /pyshelf/ +ENTRYPOINT cron start \ + && python3 configure \ + && cd src/ \ && python3 manage.py makemigrations \ && python3 manage.py makemigrations interface \ && python3 manage.py migrate \ && python3 manage.py migrate interface \ && cd .. \ - && python3 configure \ && python3 importBooks \ && nginx -g "daemon on;" \ && uwsgi --ini uwsgi.ini diff --git a/docker/config.json b/docker/config.json new file mode 100644 index 0000000..a2a9a84 --- /dev/null +++ b/docker/config.json @@ -0,0 +1 @@ +{"TITLE": "pyShelf E-Book Server", "VERSION": "Docker", "BOOKPATH": "/books", "DB_HOST": "db", "DB_PORT": "5432", "DATABASE": "pyshelf", "USER": "pyshelf", "PASSWORD": "pyshelf", "BOOKSHELF": "data/shelf.json", "ALLOWED_HOSTS": "*", "SECRET": ""} diff --git a/docker/development.docker-compose.yml b/docker/development.docker-compose.yml index 8ece1da..995a7be 100644 --- a/docker/development.docker-compose.yml +++ b/docker/development.docker-compose.yml @@ -1,11 +1,12 @@ version: "3.7" -# This file is used to test the docker image. To host pyShelf yourself for +# This file is used to test the Dockerhub image. To host pyShelf yourself for # production, please use the official pyShelf image on # https://hub.docker.com/r/pyshelf/pyshelf # For development, use the following command in the root folder: -# `docker-compose -f .\docker\development.docker-compose.yml up --build` +# +# docker-compose -f .\docker\development.docker-compose.yml up --build services: db: