Sample compose file and Dockerfile for deployment

This commit is contained in:
Eliot Berriot 2018-09-03 21:45:17 +02:00
parent ac631627ab
commit e5cdb2869f
No known key found for this signature in database
GPG key ID: DD6965E2476E5C27
5 changed files with 86 additions and 0 deletions

5
.dockerignore Normal file
View file

@ -0,0 +1,5 @@
docs
data
Dockerfile
docker-compose.yml
.env

20
Dockerfile Normal file
View file

@ -0,0 +1,20 @@
FROM rust:1-stretch
RUN apt-get update && apt-get install -y --no-install-recommends \
gettext \
postgresql-client \
libpq-dev \
git \
curl \
gcc \
make \
openssl \
libssl-dev
WORKDIR /app
COPY Cargo.toml Cargo.lock ./
RUN cargo install diesel_cli --no-default-features --features postgres --version '=1.2.0'
COPY . .
RUN cargo build
RUN rm -rf target/debug/incremental
CMD ["cargo", "run"]
EXPOSE 7878

View file

@ -17,6 +17,9 @@ All the following instructions will need a terminal.
Here are the commands to install PostgreSQL and GetText on various operating systems. Here are the commands to install PostgreSQL and GetText on various operating systems.
Some of them may need root permissions. Some of them may need root permissions.
You can also install the project using Docker and docker-compose, please refer
to the `Docker install` section.
On **Debian**: On **Debian**:
```bash ```bash
@ -142,7 +145,35 @@ mkdir media
# Actually start Plume # Actually start Plume
cargo run cargo run
## Docker install
You can use Docker and docker-compose in order to manage your Plume instance and
have it isolated from your host:
``` ```
git clone git@github.com:Plume-org/Plume.git
cd Plume
cp docs/docker-compose.sample.yml docker-compose.yml
cp docs/docker.sample.env .env
# build the containers
docker-compose build
# launch the database
docker-compose up -d postgres
# run the migrations
docker-compose run --rm plume diesel migration run
# run interactive setup
docker-compose run --rm plume bash
cargo run
# copy the env file and paste it in your host .env file
cat .env
# leave the container
exit
# launch your instance for good
docker-compose up -d
```
Then, you can configure your reverse proxy.
## Configuring Nginx ## Configuring Nginx

View file

@ -0,0 +1,18 @@
version: '3'
services:
postgres:
image: postgres:10.5
env_file: .env
restart: unless-stopped
volumes:
- "./data/postgres:/var/lib/postgresql/data"
plume:
build: .
env_file: .env
restart: unless-stopped
volumes:
- "./data/plume/static/media:/app/media"
- "./.env:/app/.env"
ports:
- "127.0.0.1:7878:7878"

12
docs/docker.sample.env Normal file
View file

@ -0,0 +1,12 @@
BASE_URL=yourdomain.com
# generate one with openssl rand -base64 45
ROCKET_SECRET_KEY=randomstringhere
# you can safely leave those defaults
POSTGRES_USER=plume
POSTGRES_PASSWORD=plume
DB_URL=postgres://plume:plume@postgres:5432/plume
DATABASE_URL=postgres://plume:plume@postgres:5432/plume
USE_HTTPS=1
ROCKET_ADDRESS=0.0.0.0
ROCKET_PORT=7878