Skip to content

forumone/docker-f1ux

Repository files navigation

Images for Gesso 2.x, Gesso 1.x, F1UX, and F1Omega

About

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.

Versions Supported

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

Using resolve-all-libraries

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_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.

Requirements

Build Instructions

Building Images

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

Building One Image

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.

Organization

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 what nix-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 as nodeVersions.node12, and there is a corresponding nodeVersions.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 as phpVersions.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>.

Post-Build Cleanup

Caveats

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:

  1. Run nix-build to persist the image tarballs themselves
  2. 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.

Cleaning Up

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

Support

These images have been battle-tested against many projects and are considered largely stable for our purposes.

License

This software is available under the MIT License. See LICENSE for details.

About

Images for building older Forum One themes

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages