Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
_site/
.sass-cache/
.jekyll-metadata
.git/
.idea/
*.iml
.DS_Store
vendor/
26 changes: 26 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@

FROM ruby:3.2-slim

# Install build dependencies required by native gem extensions (e.g., nokogiri)
# and libcurl for htmlproofer link checking
RUN apt-get update && \
apt-get install -y --no-install-recommends \
build-essential \
git \
libcurl4-openssl-dev \
&& rm -rf /var/lib/apt/lists/*

WORKDIR /site

# Install gems first (layer caching - only re-runs when Gemfile changes)
COPY Gemfile Gemfile.lock ./
RUN bundle install

# Copy the rest of the site
COPY . .

EXPOSE 4000

# Serve the site, binding to 0.0.0.0 so it's accessible outside the container
CMD ["bundle", "exec", "jekyll", "serve", "--host", "0.0.0.0", "--livereload"]

34 changes: 34 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,40 @@ For Bundler, depending on your system, you may need to also install the
Ruby development headers (e.g. `ruby-dev`). On Ubuntu/Debian,
for example, this would be accomplished by doing `sudo apt-get install ruby-dev`.


### Docker Setup (Recommended)

If you have [Docker](https://www.docker.com/) installed, you can skip
the Ruby/Bundler prerequisites entirely:

1. Clone the repository:
```bash
git clone https://github.com/Submitty/submitty.github.io.git
cd submitty.github.io
```
2. Start the development server:
```bash
docker compose up
```
The first run takes a few minutes to install dependencies. Subsequent
runs start in seconds.

3. Visit [http://localhost:4000](http://localhost:4000) to view the site.
Changes to files will automatically trigger a rebuild and refresh your
browser.

4. To stop the server, press `Ctrl+C` or run:
```bash
docker compose down
```
To run the link checker with Docker:
```bash
docker compose exec docs bundle exec jekyll build
docker compose exec docs bundle exec htmlproofer ./_site --assume-extension --empty-alt-ignore --disable_external
```
If you prefer to set up Ruby natively, see the manual instructions below.


### Setup

1. Clone the respository on your local machine, e.g.,
Expand Down
15 changes: 15 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
services:
docs:
build: .
ports:
- "4000:4000"
- "35729:35729"
volumes:
- .:/site
- bundle_cache:/usr/local/bundle
environment:
- JEKYLL_ENV=development
command: bundle exec jekyll serve --host 0.0.0.0 --livereload --force_polling

volumes:
bundle_cache: