Docker compose (#417)

* feat(docker): add healthcheck to container

Signed-off-by: Ameya Shenoy <shenoy.ameya@gmail.com>

* feat(docker): add docker-compose files

Signed-off-by: Ameya Shenoy <shenoy.ameya@gmail.com>
This commit is contained in:
Ameya Shenoy 2019-09-24 07:50:06 +05:30 committed by Mischievous Meerkat
parent ef2dd1949a
commit 4e13df9738
4 changed files with 86 additions and 2 deletions

View File

@ -2,6 +2,8 @@ FROM python:alpine
MAINTAINER Ameya Shenoy "shenoy.ameya@gmail.com"
ENV BUKUSERVER_PORT=5001
COPY . /Buku
RUN set -ex \
@ -17,6 +19,9 @@ RUN set -ex \
&& apk del .build-deps \
&& rm -rf /Buku
ENTRYPOINT gunicorn --bind 0.0.0.0:5001 "bukuserver.server:create_app()"
EXPOSE 5001
HEALTHCHECK --interval=1m --timeout=10s \
CMD nc -z localhost ${BUKUSERVER_PORT} || exit 1
ENTRYPOINT gunicorn --bind 0.0.0.0:${BUKUSERVER_PORT} "bukuserver.server:create_app()"
EXPOSE ${BUKUSERVER_PORT}

View File

@ -7,6 +7,7 @@
- [From PyPi](#from-pypi)
- [From source](#from-source)
- [Using Docker](#using-docker)
- [Using Docker Compose](#using-docker-compose)
- [Webserver options](#webserver-options)
- [Configuration](#configuration)
- [Screenshots](#screenshots)
@ -57,6 +58,36 @@ database.
Visit `127.0.0.1:5001` in your browser to access your bookmarks.
#### Using Docker Compose
There is a `docker-compose.yml` file present in the `docker-compose` directory
in the root of this project. You may modify the configurations in this file to
your liking, and then simply execute the below command.
```sh
docker-compose up -d
```
You will have you bukuserver running on port port 80 of the host.
To stop simply run
```sh
docker-compose down
```
In case you want to add basic auth to your hosted instance you may do so by
creating a `.htpasswd` file in the `data/basic_auth` directory. Add a user to
the file using
```sh
htpasswd -c data/basic_auth/.htpasswd your_username
```
And then comment out the basic auth lines from the `data/nginx/nginx.conf` file.
For more information please refer the [nginx docs](https://docs.nginx.com/nginx/admin-guide/security-controls/configuring-http-basic-authentication/).
### Webserver options
To run the server on host 127.0.0.1, port 5001, run following command:

View File

@ -0,0 +1,22 @@
server {
listen 80;
server_name yoursitename.com;
server_tokens off;
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}
location / {
#auth_basic "Administrator's Area";
#auth_basic_user_file /basic_auth/.htpasswd;
proxy_pass http://bukuserver:5001;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Remote-Port $remote_port;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_redirect off;
}
}

View File

@ -0,0 +1,26 @@
version: '3.7'
services:
bukuserver:
image: bukuserver/bukuserver
restart: unless-stopped
environment:
- BUKUSERVER_PER_PAGE=100
- BUKUSERVER_OPEN_IN_NEW_TAB=true
# - BUKUSERVER_SECRET_KEY=123456789012345678901234
# - BUKUSERVER_URL_RENDER_MODE=full
# - BUKUSERVER_DISABLE_FAVICON=false
ports:
- "5001:5001"
volumes:
- ./data:/root/.local/share/buku
nginx:
image: nginx:alpine
restart: unless-stopped
ports:
- "80:80"
volumes:
- ./data/nginx:/etc/nginx/conf.d
- ./data/basic_auth:/basic_auth