Skip to content

Commit

Permalink
docker: move the docker image creation inside the main repository
Browse files Browse the repository at this point in the history
This is a super simple start.
At minimum, configuration via environment variables (see #3543) needs to be
integrated in Etherpad to make this user-friendly.

Resolves #3524.
  • Loading branch information
muxator committed Mar 8, 2019
1 parent e9be94e commit bf68666
Show file tree
Hide file tree
Showing 4 changed files with 125 additions and 0 deletions.
52 changes: 52 additions & 0 deletions docker/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# Etherpad Lite Dockerfile
#
# https://github.com/ether/etherpad-docker
#
# Author: muxator
#
# Version 0.1

FROM node:latest
LABEL maintainer="Etherpad team, https://github.com/ether/etherpad-lite"

# install supervisor
RUN apt-get update && apt-get install -y \
supervisor \
&& rm -rf /var/lib/apt/lists/*

# install supervisor.conf in a low layer of the container
ADD supervisor.conf /etc/supervisor/supervisor.conf

# git hash of the version to be built.
# If not given, build the latest development version.
ARG ETHERPAD_VERSION=develop

# grab the ETHERPAD_VERSION tarball from github (no need to clone the whole
# repository)
RUN echo "Getting version: ${ETHERPAD_VERSION}" && \
curl \
--location \
--fail \
--silent \
--show-error \
--output /opt/etherpad-lite.tar.gz \
https://github.com/ether/etherpad-lite/archive/"${ETHERPAD_VERSION}".tar.gz && \
mkdir /opt/etherpad-lite && \
tar xf /opt/etherpad-lite.tar.gz \
--directory /opt/etherpad-lite \
--strip-components=1 && \
rm /opt/etherpad-lite.tar.gz

# install node dependencies for Etherpad
RUN /opt/etherpad-lite/bin/installDeps.sh

# Copy the custom configuration file, if present. The configuration file has to
# be manually put inside the same directory containing the Dockerfile (we cannot
# directly point to "../settings.json" for Docker's security restrictions).
#
# For the conditional COPY trick, see:
# https://stackoverflow.com/questions/31528384/conditional-copy-add-in-dockerfile#46801962
COPY nop setting[s].json /opt/etherpad-lite/

EXPOSE 9001
CMD ["supervisord", "-c", "/etc/supervisor/supervisor.conf", "-n"]
49 changes: 49 additions & 0 deletions docker/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# Docker image

This directory contains the files that are used to build the official Docker image on https://hub.docker.com/r/etherpad/etherpad.

# Rebuilding with custom settings
In order to use a personalized settings file, **you will have to rebuild your image**.

All of these instructions are as a member of the `docker` group.

Prepare your custom `settings.json` file:
```bash
cd <BASEDIR>/docker
cp ../settings.json.template settings.json
[ further edit your settings.json as needed]
```

Build the version you prefer:
```bash
# builds latest development version
docker build --tag <YOUR_USERNAME>/etherpad .

# builds latest stable version
docker build --build-arg ETHERPAD_VERSION=master --tag <YOUR_USERNAME>/etherpad .

# builds a specific version
docker build --build-arg ETHERPAD_VERSION=1.7.5 --tag <YOUR_USERNAME>/etherpad .

# builds a specific git hash
docker build --build-arg ETHERPAD_VERSION=4c45ac3cb1ae --tag <YOUR_USERNAME>/etherpad .
```

# Downloading from Docker Hub
If you are ok downloading a [prebuilt image from Docker Hub](https://hub.docker.com/r/etherpad/etherpad), these are the commands:
```bash
# gets the latest published version
docker pull etherpad/etherpad

# gets a specific version
docker pull etherpad/etherpad:1.7.5
```

# Running your instance:

To run your instance:
```bash
docker run --detach --publish <DESIDERED_PORT>:9001 <YOUR_USERNAME>/etherpad
```

And point your browser to `http://<YOUR_IP>:<DESIDERED_PORT>`
4 changes: 4 additions & 0 deletions docker/nop
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
THIS IS A DUMMY FILE

It is used to trick Docker in doing a conditional COPY
see: https://stackoverflow.com/questions/31528384/conditional-copy-add-in-dockerfile#46801962
20 changes: 20 additions & 0 deletions docker/supervisor.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
[supervisord]
nodaemon=true

[unix_http_server]
file=/var/run//supervisor.sock
chmod=0700

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///var/run//supervisor.sock

[program:etherpad]
directory=/opt/etherpad-lite
command=node node_modules/ep_etherpad-lite/node/server.js
user=root
autostart=true
autorestart=true

0 comments on commit bf68666

Please sign in to comment.