dev.Dockerfile 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. # syntax=docker/dockerfile:1
  2. FROM golang:1.21
  3. ENV CFLAGS="-ggdb3"
  4. ENV PHPIZE_DEPS \
  5. autoconf \
  6. dpkg-dev \
  7. file \
  8. g++ \
  9. gcc \
  10. libc-dev \
  11. make \
  12. pkg-config \
  13. re2c
  14. RUN apt-get update && \
  15. apt-get -y --no-install-recommends install \
  16. $PHPIZE_DEPS \
  17. libargon2-dev \
  18. libcurl4-openssl-dev \
  19. libonig-dev \
  20. libreadline-dev \
  21. libsodium-dev \
  22. libsqlite3-dev \
  23. libssl-dev \
  24. libxml2-dev \
  25. zlib1g-dev \
  26. bison \
  27. libnss3-tools \
  28. # Dev tools \
  29. git \
  30. clang \
  31. llvm \
  32. gdb \
  33. valgrind \
  34. neovim \
  35. zsh \
  36. libtool-bin && \
  37. echo 'set auto-load safe-path /' > /root/.gdbinit && \
  38. echo '* soft core unlimited' >> /etc/security/limits.conf \
  39. && \
  40. apt-get clean
  41. RUN git clone --branch=PHP-8.2 https://github.com/php/php-src.git && \
  42. cd php-src && \
  43. # --enable-embed is only necessary to generate libphp.so, we don't use this SAPI directly
  44. ./buildconf --force && \
  45. ./configure \
  46. --enable-embed \
  47. --enable-zts \
  48. --disable-zend-signals \
  49. --enable-zend-max-execution-timers \
  50. --enable-debug && \
  51. make -j$(nproc) && \
  52. make install && \
  53. ldconfig && \
  54. cp php.ini-development /usr/local/lib/php.ini && \
  55. echo "zend_extension=opcache.so\nopcache.enable=1" >> /usr/local/lib/php.ini &&\
  56. php --version
  57. WORKDIR /go/src/app
  58. COPY . .
  59. RUN cd caddy/frankenphp && \
  60. go build
  61. CMD [ "zsh" ]