aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/README.md
blob: 70222a31072af4a24acfe8038e3adfb5e9e1dc01 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
jekyll-docker
=============

![This even works?](https://github.com/egor-tensin/jekyll-docker/workflows/This%20even%20works%3F/badge.svg)

| Feature                | Command
| ---------------------- | ----------------------------------------------
| Install [ruby-install] | `make ruby-install && make ruby-install/clean`
| Install Ruby           | `make ruby`
| Install [chruby]       | `make chruby && make chruby/clean`
| Install [Bundler]      | `make bundler`
| Install dependencies   | `make dependencies`
| Run [Jekyll]           | `make jekyll/serve`
| Run Jekyll in Docker | `make docker/up`

[ruby-install]: https://github.com/postmodern/ruby-install
[chruby]: https://github.com/postmodern/chruby
[Bundler]: https://bundler.io/
[Jekyll]: https://jekyllrb.com/

| Parameter            | Default   | Description
| -------------------- | --------- | --------------------------------------------------
| PROJECT_DIR          | ..        | Jekyll project directory
| RUBY_INSTALL_VERSION | 0.7.0     | ruby-install version
| RUBY_VERSION         | 2.6.5     | Ruby version
| CHRUBY_VERSION       | 0.3.9     | chruby version
| PREFIX               | ~/.local/ | Installation directory for ruby-install and chruby

Set parameter values by passing them to make, i.e.

    make ruby RUBY_VERSION=2.7.0

Examples
--------

1. Set up an environment and run Jekyll locally:

       make ruby-install
       make ruby-install/clean
       make ruby
       make chruby
       make chruby/clean
       make bundler
       make dependencies PROJECT_DIR=../jekyll-project/
       make jekyll/serve PROJECT_DIR=../jekyll-project/

   Some of these might not work on the first try (you'd need to install some
   native dependencies for your gems, use `sudo`, etc.).

2. Run Jekyll in Docker:

       make docker/up PROJECT_DIR=../jekyll-project/

   This builds two images: `jekyll_base` and `jekyll_project`, and runs a
   container, which binds PROJECT_DIR, and runs Jekyll there.

   To rebuild the images (i.e. when you bump dependencies), run

       make docker/build PROJECT_DIR=../jekyll-project/

   Bring everything down:

       make docker/down
    
Notes
-----

This project was supposed to be included as a submodule in my Jekyll projects'
repositories.
I would then `cd` to Jekyll project's directory and run something like

    make -f jekyll-docker/Makefile docker/up

and I'd get a Docker container running Jekyll, without actually bothering to
install everything locally.
This goal was achieved, but I also noticed that "out-of-tree" builds were
actually possible, hence the introduction of the PROJECT_DIR parameter, and the
slight crazyness with the two separate images.

License
-------

Distributed under the MIT License.
See [LICENSE.txt] for details.

[LICENSE.txt]: LICENSE.txt