Browse Source

Add a docker dev setup (#3)

pull/4/head
Michael Weimann 5 months ago
parent
commit
47dbbc76a8
9 changed files with 235 additions and 2 deletions
  1. 3
    0
      .gitignore
  2. 26
    0
      Dockerfile
  3. 46
    2
      README.md
  4. 32
    0
      config.cfg.docker
  5. 32
    0
      docker-cmd.sh
  6. 12
    0
      docker-compose.yml
  7. 53
    0
      docker-setup.sh
  8. 0
    0
      fsfe.org/.gitkeep
  9. 31
    0
      less-watch.sh

+ 3
- 0
.gitignore View File

@@ -1,6 +1,9 @@
config.cfg
lighttpd-fsfe.conf
pywebserver-fsfe.log
fsfe.org
fsfe-website

lighttpd-fsfe*.log

# ignore everything in fsfe.org/ and status/ but keep the folders

+ 26
- 0
Dockerfile View File

@@ -0,0 +1,26 @@
FROM alpine:3.9

RUN apk add --no-cache \
bash \
bash-completion \
coreutils \
diffutils \
findutils \
inotify-tools \
libxml2-utils \
libxslt \
make \
nodejs \
nodejs-npm \
procps \
python3 \
rsync

RUN npm install -g less

RUN mkdir -p /fsfe-local-build/fsfe.org

EXPOSE 8000

CMD sh /fsfe-local-build/docker-cmd.sh


+ 46
- 2
README.md View File

@@ -1,5 +1,49 @@
# FSFE Local Build
# FSFE Website Local Build

This is a collection of scripts and configuration files necessary to build fsfe.org websites locally.
This is a collection of scripts, tools and configuration files necessary to build fsfe.org websites locally.

Full instructions can be found in FSFE's wiki: https://wiki.fsfe.org/TechDocs/Mainpage/BuildLocally

## Docker based development environment

For convenience local development you may want to use the docker contaienr provided by this repo.

The container contains everything you need to work on the website including serving a preview, building the static pages and the CSS files.

### Requirements

* Docker https://docs.docker.com/install/
* Docker Compose https://docs.docker.com/compose/install/
* Patience (for the website build)

### Website Dev Instructions

#### Initial set up

Just run the following command for the initial setup:

```
./docker-setup.sh
```

⚠ The command may run some hours, since it does the initial full build of the website.

#### Development

Spin up the container (⚠ takes some minutes):

docker-compose up

The website should now be available on your machine under http://127.0.0.1:8000/.

Build a single page after changes (e.g. `index.de.xhtml`):

```
docker exec \
--workdir /fsfe-local-build/fsfe.org \
fsfe-local-build \
bash ../fsfe-preview.sh ../fsfe-website/index.de.xhtml
```

Style modifications in `fsfe-website/look` trigger a re build of the styles.
After modifications a page reload shoud show the changes.

+ 32
- 0
config.cfg.docker View File

@@ -0,0 +1,32 @@
### BUILD DIRECTORIES ###

# Cloned Git directory (repository with XHTML source files)
LOC_trunk=/fsfe-local-build/fsfe-website

# Directory in which the result of the build process (html files) will be saved
LOC_out=/fsfe-local-build/fsfe.org


### LOCAL WEBSERVER ###

# Choose your local webserver.
# Default is "python" which is python3's built-in http.server module (SimpleHTTP) that is available on most distributions
# Use "lighttpd" if you want to use the Lighttpd webserver. This has to be configured manually (see guide)
HTTPD=lighttpd


### ADVANCED ###

# Directory of the secondary Git directory with which you made a first full build.
# Avoids having some generated files in your clean trunk.
# Default: Leave empty if you just want to use one Git source directory (recommended)
LOC_trunk_dev=

# Choose on which port the webserver runs. This has no effect for "lighttpd".
HTTPD_port=5080

# If you use other webservers like "lighttpd", this is the path to its config file
# Default: points to a lighttpd config file in the same directory as the script
# Has no effect if you use the "python" webserver
HTTPD_conf=$ROOT/lighttpd-fsfe.conf


+ 32
- 0
docker-cmd.sh View File

@@ -0,0 +1,32 @@
#!/bin/bash
########################################################################
# Copyright (C) 2019 Michael Weimann <mweimann@fsfe.org>
########################################################################
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
########################################################################
#
# This script is executed in docker CMD.
#
#######################################################################

# Set up the less watcher
cd /fsfe-local-build
sh less-watch.sh &

# Run the preview server
cd /fsfe-local-build/fsfe.org
python3 -m http.server


+ 12
- 0
docker-compose.yml View File

@@ -0,0 +1,12 @@
version: '3'

services:
fsfe-local-build:
build: .
image: fsfe/local-build:1.0
container_name: fsfe-local-build
ports:
- 8000:8000
volumes:
- .:/fsfe-local-build


+ 53
- 0
docker-setup.sh View File

@@ -0,0 +1,53 @@
#!/bin/bash
########################################################################
# Copyright (C) 2019 Michael Weimann <mweimann@fsfe.org>
########################################################################
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
########################################################################
#
# This script runs the docker dev setup.
#
#######################################################################

echo -e "\e[96m→ Cloning the website repo\e[0m"
git clone git@git.fsfe.org:FSFE/fsfe-website.git
echo ""

echo -e "\e[96m→ Setting up the config file\e[0m"
cp config.cfg.docker config.cfg
echo ""

echo -e "\e[96m→ Linking the look directory\e[0m"
ln -s ../fsfe-website/look fsfe.org/look
echo ""

echo -e "\e[96m→ Starting the container\e[0m"
docker-compose up --build -d
echo ""

echo -e "\e[96m→ Initial full build\e[0m"
echo -e "\e[33m⚠ This may take some hours\e[0m"
docker exec fsfe-local-build \
bash /fsfe-local-build/fsfe-website/build/build_main.sh \
build_into /fsfe-local-build/fsfe.org/ \
--statusdir /fsfe-local-build/status/ \
|| true
echo ""

echo -e "\e[96m→ Stopping the container\e[0m"
docker-compose stop
echo ""


+ 0
- 0
fsfe.org/.gitkeep View File


+ 31
- 0
less-watch.sh View File

@@ -0,0 +1,31 @@
#!/bin/bash
########################################################################
# Copyright (C) 2019 Michael Weimann <mweimann@fsfe.org>
########################################################################
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
########################################################################
#
# This script sets up a watcher that re-compiles the fsfe website
# styles on changes.
#
#######################################################################

while inotifywait \
-r -e close_write -e create -e moved_to \
--exclude '\.(swx|swp|min\.css)' fsfe-website/look; do
lessc -x fsfe-website/look/fsfe.less fsfe-website/look/fsfe.min.css;
done


Loading…
Cancel
Save