mirror of
https://git.disroot.org/wolfree/wolfree-dockerfile
synced 2025-06-06 00:49:20 +02:00
2023-08-10
This commit is contained in:
171
Dockerfile
Normal file
171
Dockerfile
Normal file
@@ -0,0 +1,171 @@
|
||||
# syntax=docker/dockerfile:1
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
# This file is part of Wolfree.
|
||||
# This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
|
||||
FROM alpine
|
||||
|
||||
WORKDIR /app/
|
||||
|
||||
# Install all dependencies.
|
||||
|
||||
RUN \
|
||||
apk add \
|
||||
-- \
|
||||
wget \
|
||||
npm \
|
||||
gcc \
|
||||
rustup \
|
||||
;
|
||||
|
||||
RUN \
|
||||
rustup-init -y
|
||||
|
||||
COPY \
|
||||
./docusaurus/package.json \
|
||||
./docusaurus/package.json
|
||||
|
||||
RUN \
|
||||
npm install \
|
||||
--prefix ./docusaurus/ \
|
||||
-- \
|
||||
;
|
||||
|
||||
# WolframAlpha LLC prebuilt the website and kindly deployed it on the Internet.
|
||||
# We can run Wget to download the web pages and save them as static pages.
|
||||
|
||||
RUN \
|
||||
wget \
|
||||
--directory-prefix=./docusaurus/static/ \
|
||||
--no-host-directories \
|
||||
--page-requisites \
|
||||
--convert-links \
|
||||
--no-verbose \
|
||||
-- \
|
||||
'https://www.wolframalpha.com/input/index.html' \
|
||||
'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.0/jquery.min.js' \
|
||||
'https://cdnjs.cloudflare.com/ajax/libs/dompurify/3.0.5/purify.min.js' \
|
||||
; \
|
||||
: \
|
||||
;
|
||||
|
||||
RUN \
|
||||
sed \
|
||||
-e 's|.*js...static.chunks...........||' \
|
||||
-e 's|"........js.....miniCssF.*|.js\n|' \
|
||||
-e 's|:"|.|g' \
|
||||
-e 's|",|.js\n|g' \
|
||||
-- \
|
||||
./docusaurus/static/_next/static/chunks/webpack-*.js \
|
||||
| \
|
||||
wget \
|
||||
--directory-prefix=./docusaurus/static/ \
|
||||
--no-host-directories \
|
||||
--page-requisites \
|
||||
--convert-links \
|
||||
--no-verbose \
|
||||
--input-file=- \
|
||||
--base=https://www.wolframalpha.com/_next/static/chunks/ \
|
||||
-- \
|
||||
; \
|
||||
: \
|
||||
;
|
||||
|
||||
RUN \
|
||||
sed \
|
||||
-e 's|.*return.static.css.....||' \
|
||||
-e 's|.........css.......function.*|.css\n|' \
|
||||
-e 's|[0-9]*:"||g' \
|
||||
-e 's|",|.css\n|g' \
|
||||
-- \
|
||||
./docusaurus/static/_next/static/chunks/webpack-*.js \
|
||||
| \
|
||||
wget \
|
||||
--directory-prefix=./docusaurus/static/ \
|
||||
--no-host-directories \
|
||||
--page-requisites \
|
||||
--convert-links \
|
||||
--no-verbose \
|
||||
--input-file=- \
|
||||
--base=https://www.wolframalpha.com/_next/static/css/ \
|
||||
-- \
|
||||
; \
|
||||
: \
|
||||
;
|
||||
|
||||
# Delete unused large files on the static website.
|
||||
|
||||
RUN \
|
||||
truncate \
|
||||
-s 0 \
|
||||
-- \
|
||||
./docusaurus/static/_next/static/images/* \
|
||||
;
|
||||
|
||||
# Build the Docusaurus static website.
|
||||
|
||||
COPY \
|
||||
./docusaurus/ \
|
||||
./docusaurus/
|
||||
|
||||
RUN \
|
||||
npm run \
|
||||
--prefix ./docusaurus/ \
|
||||
-- \
|
||||
build \
|
||||
;
|
||||
|
||||
# Lint the source code and run the Rust program.
|
||||
# The Rust program customizes the static pages.
|
||||
|
||||
COPY \
|
||||
./rust/ \
|
||||
./rust/
|
||||
|
||||
RUN \
|
||||
PATH="$HOME/.cargo/bin:$PATH" \
|
||||
cargo clippy \
|
||||
--manifest-path ./rust/wolfree_libredirect_patch/Cargo.toml \
|
||||
-- \
|
||||
--warn clippy::all \
|
||||
--warn clippy::cargo \
|
||||
--warn clippy::nursery \
|
||||
--warn clippy::pedantic \
|
||||
--warn clippy::restriction \
|
||||
;
|
||||
|
||||
RUN \
|
||||
PATH="$HOME/.cargo/bin:$PATH" \
|
||||
cargo clippy \
|
||||
--manifest-path ./rust/wolfree_sed_in_place/Cargo.toml \
|
||||
-- \
|
||||
--warn clippy::all \
|
||||
--warn clippy::cargo \
|
||||
--warn clippy::nursery \
|
||||
--warn clippy::pedantic \
|
||||
--warn clippy::restriction \
|
||||
;
|
||||
|
||||
# Optionally, customize Wolfree instances to suit LibRedirect.
|
||||
# https://github.com/libredirect/browser_extension/issues/425
|
||||
# To integrate Wolfree with LibRedirect, please delete the number sign at the beginning of the following line.
|
||||
# RUN PATH="$HOME/.cargo/bin:$PATH" cargo run --manifest-path ./rust/wolfree_libredirect_patch/Cargo.toml -- ;
|
||||
|
||||
RUN PATH="$HOME/.cargo/bin:$PATH" cargo run --manifest-path ./rust/wolfree_sed_in_place/Cargo.toml -- ;
|
||||
|
||||
# Optimizing builds with cache management | Docker Documentation
|
||||
# https://docs.docker.com/build/cache/
|
||||
# Because a change causes a rebuild for steps that follow,
|
||||
# try to make expensive steps appear near the beginning of the Dockerfile.
|
||||
# Steps that change often should appear near the end of the Dockerfile to avoid triggering rebuilds of layers that haven't changed.
|
||||
|
||||
CMD \
|
||||
npm run \
|
||||
--prefix ./docusaurus/ \
|
||||
-- \
|
||||
serve \
|
||||
--port 80 \
|
||||
--host localhost \
|
||||
;
|
||||
|
||||
EXPOSE 80
|
Reference in New Issue
Block a user