Browse Source

Sample compose file and Dockerfile for deployment

tags/0.2.0-alpha-1
Eliot Berriot 2 years ago
parent
commit
e5cdb2869f
No known key found for this signature in database GPG Key ID: DD6965E2476E5C27
5 changed files with 86 additions and 0 deletions
  1. +5
    -0
      .dockerignore
  2. +20
    -0
      Dockerfile
  3. +31
    -0
      docs/INSTALL.md
  4. +18
    -0
      docs/docker-compose.sample.yml
  5. +12
    -0
      docs/docker.sample.env

+ 5
- 0
.dockerignore View File

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

+ 20
- 0
Dockerfile 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

+ 31
- 0
docs/INSTALL.md 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.
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**:

```bash
@@ -142,8 +145,36 @@ mkdir media

# Actually start Plume
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

Here is a sample Nginx configuration for a Plume instance (replace `blog.example.com` with your domain name):


+ 18
- 0
docs/docker-compose.sample.yml 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
- 0
docs/docker.sample.env 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

Loading…
Cancel
Save