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.jsons 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_modulesThe resolve-all-libraries command accepts a few flags to change its behavior:
- Passing
-vincreases the verbosity of the output. Passing-vvincreases it to debug levels. - Passing
-fforces the script to continue even if errors occur. This is useful to ignore resolution errors that don't affect theme builds. - Passing
-houtputs 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-buildThe 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 && ./resultImages 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 <resultImages 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-buildlooks for if not given a file argument. -
pkgs.nixis an export of nixpkgs with this repo's overlay pre-applied. -
overlay.nixis 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.nixdefines all of the supported Node.js versions. A Node.js version like 12 is available asnodeVersions.node12, and there is a correspondingnodeVersions.grunt12for the Grunt CLI. -
php.nixdefines 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.composer73is Composer built for the custom PHP 7.3). -
ruby.nixbuilds a stripped-down Ruby 2.3 for the old Compass-based themes. -
bundler.nixbuilds 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-buildto persist the image tarballs themselves - Run
nix-build roots.nix -o rootsto 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-garbageYou can also ask Nix to optimize the remaining store paths with the below command.
nix-store --optimizeThese 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.