This repo builds multiple images for older Forum One themes. We provide builds for Gesso 2.x and the pre-node-sass
themes (Gesso 1.x, f1ux, f1omega, and so on). Images are broken down by the available Node, PHP, and Ruby versions installed - this is done in case there are version compatibility issues with software.
Compass-based themes
Node Version | PHP Version | Ruby Version | Image |
---|---|---|---|
v4 | 5.6 | 2.3 | forumone/f1ux:node-v4-php-5.6-ruby-2.3 |
v4 | 7.0 | 2.3 | forumone/f1ux:node-v4-php-7.0-ruby-2.3 |
v4 | 7.1 | 2.3 | forumone/f1ux:node-v4-php-7.1-ruby-2.3 |
v4 | 7.2 | 2.3 | forumone/f1ux:node-v4-php-7.2-ruby-2.3 |
v4 | 7.3 | 2.3 | forumone/f1ux:node-v4-php-7.3-ruby-2.3 |
v4 | 7.4 | 2.3 | forumone/f1ux:node-v4-php-7.4-ruby-2.3 |
v4 | 8.0 | 2.3 | forumone/f1ux:node-v4-php-8.0-ruby-2.3 |
v6 | 5.6 | 2.3 | forumone/f1ux:node-v6-php-5.6-ruby-2.3 |
v6 | 7.0 | 2.3 | forumone/f1ux:node-v6-php-7.0-ruby-2.3 |
v6 | 7.1 | 2.3 | forumone/f1ux:node-v6-php-7.1-ruby-2.3 |
v6 | 7.2 | 2.3 | forumone/f1ux:node-v6-php-7.2-ruby-2.3 |
v6 | 7.3 | 2.3 | forumone/f1ux:node-v6-php-7.3-ruby-2.3 |
v6 | 7.4 | 2.3 | forumone/f1ux:node-v6-php-7.4-ruby-2.3 |
v6 | 8.0 | 2.3 | forumone/f1ux:node-v6-php-8.0-ruby-2.3 |
v8 | 5.6 | 2.3 | forumone/f1ux:node-v8-php-5.6-ruby-2.3 |
v8 | 7.0 | 2.3 | forumone/f1ux:node-v8-php-7.0-ruby-2.3 |
v8 | 7.1 | 2.3 | forumone/f1ux:node-v8-php-7.1-ruby-2.3 |
v8 | 7.2 | 2.3 | forumone/f1ux:node-v8-php-7.2-ruby-2.3 |
v8 | 7.3 | 2.3 | forumone/f1ux:node-v8-php-7.3-ruby-2.3 |
v8 | 7.4 | 2.3 | forumone/f1ux:node-v8-php-7.4-ruby-2.3 |
v8 | 8.0 | 2.3 | forumone/f1ux:node-v8-php-8.0-ruby-2.3 |
v10 | 5.6 | 2.3 | forumone/f1ux:node-v10-php-5.6-ruby-2.3 |
v10 | 7.0 | 2.3 | forumone/f1ux:node-v10-php-7.0-ruby-2.3 |
v10 | 7.1 | 2.3 | forumone/f1ux:node-v10-php-7.1-ruby-2.3 |
v10 | 7.2 | 2.3 | forumone/f1ux:node-v10-php-7.2-ruby-2.3 |
v10 | 7.3 | 2.3 | forumone/f1ux:node-v10-php-7.3-ruby-2.3 |
v10 | 7.4 | 2.3 | forumone/f1ux:node-v10-php-7.4-ruby-2.3 |
v10 | 8.0 | 2.3 | forumone/f1ux:node-v10-php-8.0-ruby-2.3 |
v12 | 5.6 | 2.3 | forumone/f1ux:node-v12-php-5.6-ruby-2.3 |
v12 | 7.0 | 2.3 | forumone/f1ux:node-v12-php-7.0-ruby-2.3 |
v12 | 7.1 | 2.3 | forumone/f1ux:node-v12-php-7.1-ruby-2.3 |
v12 | 7.2 | 2.3 | forumone/f1ux:node-v12-php-7.2-ruby-2.3 |
v12 | 7.3 | 2.3 | forumone/f1ux:node-v12-php-7.3-ruby-2.3 |
v12 | 7.4 | 2.3 | forumone/f1ux:node-v12-php-7.4-ruby-2.3 |
v12 | 8.0 | 2.3 | forumone/f1ux:node-v12-php-8.0-ruby-2.3 |
Gesso 2.x-based themes
Node Version | PHP Version | Image |
---|---|---|
v4 | 5.6 | forumone/gesso:2-node-v4-php-5.6 |
v4 | 7.0 | forumone/gesso:2-node-v4-php-7.0 |
v4 | 7.1 | forumone/gesso:2-node-v4-php-7.1 |
v4 | 7.2 | forumone/gesso:2-node-v4-php-7.2 |
v4 | 7.3 | forumone/gesso:2-node-v4-php-7.3 |
v4 | 7.4 | forumone/gesso:2-node-v4-php-7.4 |
v4 | 8.0 | forumone/gesso:2-node-v4-php-8.0 |
v6 | 5.6 | forumone/gesso:2-node-v6-php-5.6 |
v6 | 7.0 | forumone/gesso:2-node-v6-php-7.0 |
v6 | 7.1 | forumone/gesso:2-node-v6-php-7.1 |
v6 | 7.2 | forumone/gesso:2-node-v6-php-7.2 |
v6 | 7.3 | forumone/gesso:2-node-v6-php-7.3 |
v6 | 7.4 | forumone/gesso:2-node-v6-php-7.4 |
v6 | 8.0 | forumone/gesso:2-node-v6-php-8.0 |
v8 | 5.6 | forumone/gesso:2-node-v8-php-5.6 |
v8 | 7.0 | forumone/gesso:2-node-v8-php-7.0 |
v8 | 7.1 | forumone/gesso:2-node-v8-php-7.1 |
v8 | 7.2 | forumone/gesso:2-node-v8-php-7.2 |
v8 | 7.3 | forumone/gesso:2-node-v8-php-7.3 |
v8 | 7.4 | forumone/gesso:2-node-v8-php-7.4 |
v8 | 8.0 | forumone/gesso:2-node-v8-php-8.0 |
v10 | 5.6 | forumone/gesso:2-node-v10-php-5.6 |
v10 | 7.0 | forumone/gesso:2-node-v10-php-7.0 |
v10 | 7.1 | forumone/gesso:2-node-v10-php-7.1 |
v10 | 7.2 | forumone/gesso:2-node-v10-php-7.2 |
v10 | 7.3 | forumone/gesso:2-node-v10-php-7.3 |
v10 | 7.4 | forumone/gesso:2-node-v10-php-7.4 |
v10 | 8.0 | forumone/gesso:2-node-v10-php-8.0 |
v12 | 5.6 | forumone/gesso:2-node-v12-php-5.6 |
v12 | 7.0 | forumone/gesso:2-node-v12-php-7.0 |
v12 | 7.1 | forumone/gesso:2-node-v12-php-7.1 |
v12 | 7.2 | forumone/gesso:2-node-v12-php-7.2 |
v12 | 7.3 | forumone/gesso:2-node-v12-php-7.3 |
v12 | 7.4 | forumone/gesso:2-node-v12-php-7.4 |
v12 | 8.0 | forumone/gesso:2-node-v12-php-8.0 |
Previous iterations of these images used to include versions of PhantomJS to support projects. However, this became very unwieldly as some package.json
s would resolve to multiple versions at the same time. Instead, we now ship a resolve-all-libraries
script to automatically resolve the library references that PhantomJS needs.
For example, you can use this snippet to resolve library references in your node_modules
after an npm install
in a Dockerfile:
RUN set -ex \
&& npm install \
&& resolve-all-libraries node_modules
The resolve-all-libraries
command accepts a few flags to change its behavior:
- Passing
-v
increases the verbosity of the output. Passing-vv
increases it to debug levels. - Passing
-f
forces the script to continue even if errors occur. This is useful to ignore resolution errors that don't affect theme builds. - Passing
-h
outputs the help and exits.
- Docker
- Nix (see installation instructions)
Note that it will take some time to build all images in this project; there are custom node.js and PHP derivations that must be compiled first.
nix-build
The output of this build is two shell scripts (./result
and ./result-2
) that must be run to load the images into your Docker daemon.
If you only want a single set of images, use the -A
flag:
nix-build -A f1ux && ./result
Images available in pkgs.nix
. To build forumone/f1ux:node-v10-php-7.2-ruby-2.3
, use this expression:
nix-build pkgs.nix -A f1ux.node10-php72
docker load <result
Images for Gesso 2.x can be found by building against the gesso2
attribute of pkgs.nix
.
This repository is organized as a Nixpkgs overlay, which simply means that it augments the system's nixpkgs with custom derivations. The files are listed here in roughly dependency order:
-
The entrypoint is
default.nix
, which is whatnix-build
looks for if not given a file argument. -
pkgs.nix
is an export of nixpkgs with this repo's overlay pre-applied. -
overlay.nix
is the most useful starting point for understanding the repo; it's the file that defines new packages (or replaces existing ones) in use by the other files.
Interpreters:
-
node.nix
defines all of the supported Node.js versions. A Node.js version like 12 is available asnodeVersions.node12
, and there is a correspondingnodeVersions.grunt12
for the Grunt CLI. -
php.nix
defines all of the supported PHP versions. Each PHP version is keyed by its major and minor version (thus, 7.3 is available asphpVersions.php73
). Composer is also available, keyed by PHP version (phpVersions.composer73
is Composer built for the custom PHP 7.3). -
ruby.nix
builds a stripped-down Ruby 2.3 for the old Compass-based themes. -
bundler.nix
builds Bundler 2 against the custom Ruby derivation.
Paths:
The files certPath.nix
and composerTemp.nix
contain Nix derivations to customize the path layout inside of the Docker image in which they are included.
Utilities:
util.nix
includes functions intended to supplement <nixpkgs/lib>
.
If you're done with the builds here, you can ask Nix to collect garbage from its store. This will remove anything that does not have a root (i.e., a link from outside the store).
There are two suggestions to avoid accidentally purging build artifacts:
- Run
nix-build
to persist the image tarballs themselves - Run
nix-build roots.nix -o roots
to persist the interpreters built for the images
If these two are run, then you will only purge the intermediate artifacts and build tooling, which are relatively easy to re-fetch or regenerate.
This command will remove unused store paths (remember to read the "caveats" section!):
nix-collect-garbage
You can also ask Nix to optimize the remaining store paths with the below command.
nix-store --optimize
These images have been battle-tested against many projects and are considered largely stable for our purposes.
This software is available under the MIT License. See LICENSE for details.