scramjet / Dockerfile
soiz1's picture
Update Dockerfile
921b6e1 verified
raw
history blame
2.65 kB
FROM node:20
# bashとビルドツールをインストール
RUN apt-get update && apt-get install -y \
bash \
curl \
build-essential \
clang \
cmake \
git \
pkg-config \
libssl-dev
# 必要ならここでRustとツールチェーンをインストール
# RUN curl https://sh.rustup.rs -sSf | bash -s -- -y
# ENV PATH="/root/.cargo/bin:${PATH}"
# RUN cargo install wasm-bindgen-cli wasm-opt wasm-snip
WORKDIR /app
COPY . .
# pnpmをグローバルにインストール
RUN npm install -g pnpm
# 依存インストール
RUN pnpm install
# build.shの内容を直接実行する(RUNは分割して記述)
RUN bash -c "\
set -euo pipefail && \
export WBG='wasm-bindgen 0.2.100' && \
if ! command -v cargo wasm-bindgen wasm-opt wasm-snip &>/dev/null; then \
echo 'Please install cargo, wasm-bindgen, wasm-opt, and wasm-snip!'; exit 1; \
fi && \
if ! [[ \"$(wasm-bindgen -V)\" =~ ^\"$WBG\" ]]; then \
echo \"Incorrect wasm-bindgen version: $(wasm-bindgen -V) != $WBG\"; exit 1; \
fi && \
cd rewriter/wasm && \
export RUSTFLAGS='-Zlocation-detail=none -Zfmt-debug=none' && \
if [ \"${OPTIMIZE_FOR_SIZE:-0}\" = \"1\" ]; then \
export RUSTFLAGS=\"${RUSTFLAGS} -C opt-level=z\"; \
fi && \
STD_FEATURES='panic_immediate_abort' && \
if [ \"${OPTIMIZE_FOR_SPEED:-0}\" = \"0\" ]; then \
STD_FEATURES=\"${STD_FEATURES},optimize_for_size\"; \
fi && \
cargo build --release --target wasm32-unknown-unknown \
-Z build-std=panic_abort,std -Z build-std-features=${STD_FEATURES} \
--no-default-features --features \"debug,${FEATURES:-}\" && \
wasm-bindgen --target web --out-dir out/ ../target/wasm32-unknown-unknown/release/wasm.wasm && \
sed -i 's/import.meta.url/\"\"/g' out/wasm.js && \
cd ../../ && \
wasm-snip rewriter/wasm/out/wasm_bg.wasm -o rewriter/wasm/out/wasm_snipped.wasm \
-p 'oxc_regular_expression::.*' \
'oxc_parser::ts::.*' \
'oxc_parser::jsx::.*' && \
if [ \"${RELEASE:-0}\" = \"1\" ]; then \
G=\"--generate-global-effects\" && \
wasm-opt ${WASMOPTFLAGS:-} \
rewriter/wasm/out/wasm_snipped.wasm -o rewriter/wasm/out/optimized.wasm \
--converge -tnh --vacuum $G -O4 $G --flatten $G --rereloop $G -Oz $G \
--code-folding $G --const-hoisting $G --dae $G --merge-locals; \
else \
cp rewriter/wasm/out/wasm_snipped.wasm rewriter/wasm/out/optimized.wasm; \
fi && \
mkdir -p dist && \
cp rewriter/wasm/out/optimized.wasm dist/scramjet.wasm.wasm && \
echo 'Rewriter Build Complete!'"
# アプリのビルド
RUN pnpm build
# ポート開放と起動コマンド
EXPOSE 1337
CMD ["pnpm", "dev"]