diff --git a/.gitignore b/.gitignore index 0d5f77bdf..f006d39e3 100644 --- a/.gitignore +++ b/.gitignore @@ -62,3 +62,5 @@ webapp/cypress/videos server/swagger/clients server/vendor .idea +docker/certs +docker/data diff --git a/Dockerfile b/docker/Dockerfile similarity index 83% rename from Dockerfile rename to docker/Dockerfile index 9307832e9..466f59937 100644 --- a/Dockerfile +++ b/docker/Dockerfile @@ -1,8 +1,8 @@ -FROM ubuntu:latest +FROM ubuntu:20.04 # Make sure that the underlying container is patched to the latest versions -RUN apt update && \ - apt install -y wget tar gzip +RUN apt-get update && \ + apt-get install -y gzip tar wget # Now install Focalboard as a seperate layer RUN wget https://github.com/mattermost/focalboard/releases/download/v0.6.1/focalboard-server-linux-amd64.tar.gz && \ diff --git a/docker/README.md b/docker/README.md new file mode 100644 index 000000000..18c1de9be --- /dev/null +++ b/docker/README.md @@ -0,0 +1,30 @@ +# Deploy Focalboard with Docker + +## Docker + +The Dockerfile gives a quick and easy way to pull the latest Focalboard server and deploy it locally. + +``` +docker build -t focalboard . +docker run -it -p 80:8000 focalboard +``` + +Open a browser to http://localhost to start + +## Docker-Compose + +Docker-Compose provides the option to automate the build and run step, or even include some of the steps from the [personal server setup](https://www.focalboard.com/download/personal-edition/ubuntu/). + +To start the server run + +``` +docker-compose up +``` + +This will automatically build the focalboard image and start it with the http port mapping. + +To run focalboard with a nginx proxy and a postgres backend run + +``` +docker-compose -f docker-compose-db-nginx.yml up +``` diff --git a/docker/config.json b/docker/config.json new file mode 100644 index 000000000..b6471e882 --- /dev/null +++ b/docker/config.json @@ -0,0 +1,16 @@ +{ + "serverRoot": "http://localhost:8000", + "port": 8000, + "dbtype": "postgres", + "dbconfig": "postgres://boardsuser:boardsuser-password@focalboard-db/boards?sslmode=disable&connect_timeout=10", + "postgres_dbconfig": "dbname=boards sslmode=disable", + "useSSL": false, + "webpath": "./pack", + "filespath": "./files", + "telemetry": true, + "session_expire_time": 2592000, + "session_refresh_time": 18000, + "localOnly": false, + "enableLocalMode": true, + "localModeSocketLocation": "/var/tmp/focalboard_local.socket" +} diff --git a/docker/docker-compose-db-nginx.yml b/docker/docker-compose-db-nginx.yml new file mode 100644 index 000000000..c6db79fa4 --- /dev/null +++ b/docker/docker-compose-db-nginx.yml @@ -0,0 +1,36 @@ +version: "3" +services: + app: + build: + context: ./ + container_name: focalboard + depends_on: + - focalboard-db + expose: + - 8000 + environment: + - VIRTUAL_HOST=focalboard.local + - VIRTUAL_PORT=8000 + volumes: + - "./config.json:/opt/focalboard/config.json" + + proxy: + image: jwilder/nginx-proxy:latest + container_name: focalboard-proxy + ports: + - 443:443 + volumes: + - "./certs:/etc/nginx/certs:ro" + - "/var/run/docker.sock:/tmp/docker.sock:ro" + + focalboard-db: + image: postgres:latest + container_name: focalboard-postgres + restart: always + volumes: + - "./data:/var/lib/postgresql/data" + environment: + POSTGRES_DB: boards + POSTGRES_USER: boardsuser + POSTGRES_PASSWORD: boardsuser-password + diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml new file mode 100644 index 000000000..d32265f49 --- /dev/null +++ b/docker/docker-compose.yml @@ -0,0 +1,12 @@ +version: "3" +services: + app: + build: + context: ./ + container_name: focalboard + ports: + - 80:8000 + environment: + - VIRTUAL_HOST=focalboard.local + - VIRTUAL_PORT=8000 +