aboutsummaryrefslogtreecommitdiffhomepage
path: root/worker/php/Dockerfile
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2025-09-05 20:12:41 +0900
committernsfisis <nsfisis@gmail.com>2025-09-05 20:52:56 +0900
commitc7941d027be068f6e563a17e882232580fe15334 (patch)
tree40479fdff8903af289f8a2a02c6f58ba1c69a82c /worker/php/Dockerfile
parent0f91e938442b22e54ba2f1b29e25d678cf0acdd3 (diff)
downloadiosdc-japan-2025-albatross-c7941d027be068f6e563a17e882232580fe15334.tar.gz
iosdc-japan-2025-albatross-c7941d027be068f6e563a17e882232580fe15334.tar.zst
iosdc-japan-2025-albatross-c7941d027be068f6e563a17e882232580fe15334.zip
feat(worker): move directory worker/ to worker/php/
Diffstat (limited to 'worker/php/Dockerfile')
-rw-r--r--worker/php/Dockerfile82
1 files changed, 82 insertions, 0 deletions
diff --git a/worker/php/Dockerfile b/worker/php/Dockerfile
new file mode 100644
index 0000000..18e715b
--- /dev/null
+++ b/worker/php/Dockerfile
@@ -0,0 +1,82 @@
+FROM emscripten/emsdk:3.1.74 AS wasm-builder
+
+RUN git clone --depth=1 --branch=php-8.4.4 https://github.com/php/php-src
+
+RUN apt-get update && \
+ apt-get install -y --no-install-recommends \
+ autoconf \
+ bison \
+ pkg-config \
+ re2c \
+ && \
+ :
+
+# Define ZEND_MM_ERROR=0 for suppressing munmap() errors.
+RUN cd php-src && \
+ ./buildconf --force && \
+ emconfigure ./configure \
+ --disable-all \
+ --disable-mbregex \
+ --disable-fiber-asm \
+ --disable-cli \
+ --disable-cgi \
+ --disable-phpdbg \
+ --enable-embed=static \
+ --enable-short-tags \
+ --enable-mbstring \
+ --without-iconv \
+ --without-libxml \
+ --without-pcre-jit \
+ --without-pdo-sqlite \
+ --without-sqlite3 \
+ && \
+ EMCC_CFLAGS='-s ERROR_ON_UNDEFINED_SYMBOLS=0 -D ZEND_MM_ERROR=0' emmake make -j$(nproc) && \
+ mv libs/libphp.a .. && \
+ make clean && \
+ git clean -fd && \
+ :
+
+COPY php-wasm.c /src/
+
+RUN cd php-src && \
+ emcc \
+ -c \
+ -o php-wasm.o \
+ -I . \
+ -I TSRM \
+ -I Zend \
+ -I main \
+ ../php-wasm.c \
+ && \
+ mv php-wasm.o .. && \
+ make clean && \
+ git clean -fd && \
+ :
+
+RUN emcc \
+ -s ENVIRONMENT=node \
+ -s ERROR_ON_UNDEFINED_SYMBOLS=0 \
+ -s EXPORTED_RUNTIME_METHODS='["ccall"]' \
+ -s EXPORT_ES6=1 \
+ -s INITIAL_MEMORY=16777216 \
+ -s INVOKE_RUN=0 \
+ -s MODULARIZE=1 \
+ -o php-wasm.js \
+ php-wasm.o \
+ libphp.a \
+ ;
+
+FROM node:22.14
+
+WORKDIR /app
+ENV NODE_ENV=production
+
+COPY --from=wasm-builder /src/php-wasm.js /src/php-wasm.wasm /app/
+COPY package.json package-lock.json /app/
+
+RUN npm install
+
+COPY index.mjs exec.mjs /app/
+
+ENTRYPOINT ["node", "index.mjs"]
+EXPOSE 80