diff --git a/docker/Dockerfile.streamline-emr.amd64 b/docker/Dockerfile.streamline-emr.amd64 index 0326e6f3..d1ff96b6 100644 --- a/docker/Dockerfile.streamline-emr.amd64 +++ b/docker/Dockerfile.streamline-emr.amd64 @@ -1,4 +1,78 @@ -FROM streamlinehealth/streamline:signalytic +################################################################################ +# Use known working image to pull in working wkhtmltopdf libraries +################################################################################ -# update db init data -COPY streamline_initial.sql /docker-entrypoint-initdb.d/ \ No newline at end of file +FROM surnet/alpine-wkhtmltopdf:3.16.2-0.12.6-full as wkhtmltopdf +FROM php:8.2-fpm-alpine3.17 AS app + +# wkhtmltopdf install dependencies +RUN apk add --no-cache \ + libstdc++ \ + libx11 \ + libxrender \ + libxext \ + libssl1.1 \ + ca-certificates \ + fontconfig \ + freetype \ + ttf-droid \ + ttf-freefont \ + ttf-liberation \ + # more fonts + ; +# wkhtmltopdf copy bins from ext image +COPY --from=wkhtmltopdf /bin/wkhtmltopdf /bin/wkhtmltoimage /bin/libwkhtmltox.so /usr/bin/ + + +################################################################################ +# Copied from previous Streamline Dockerfile +################################################################################ + +# Install necessary packages and cleanup +RUN set -ex; \ + apk update && \ + apk add --no-cache curl gnupg mysql mysql-client pwgen && \ + docker-php-ext-install pdo pdo_mysql && \ + rm -rf /var/cache/apk/* + +# Install Composer +RUN curl -sS https://getcomposer.org/installer | \ + php -- --install-dir=/usr/bin/ --filename=composer + +# Set the working directory and copy the application code +COPY streamline-src /var/www/html + +COPY my.cnf /etc/mysql/my.cnf + +WORKDIR /var/www/html + +# Create the 'streamline' user and adjust permissions +RUN addgroup -g 1000 streamline && adduser -G streamline -g streamline -s /bin/sh -D streamline && \ + composer install && \ + chmod -R 777 /var/www/html/storage/ && \ + chown -R streamline:streamline /var/www/html && \ + mkdir -p /docker-entrypoint-initdb.d/ + +# Initialize MySQL +COPY streamline_initial.sql /docker-entrypoint-initdb.d/ + +RUN mkdir /scripts && \ + mkdir /scripts/pre-exec.d && \ + mkdir /scripts/pre-init.d && \ + chmod -R 755 /scripts + +VOLUME ["/var/lib/mysql"] + +# Set the startup script as executable +RUN chmod +x /var/www/html/start_up.sh + +# Define the entry point and expose port 80, 3306 +ENTRYPOINT ["/bin/sh", "/var/www/html/start_up.sh"] + +EXPOSE 80 3306 + + +################################################################################ +# Update snappy config to fix issues with wkhtmltopdf +################################################################################ +COPY snappy.php /var/www/html/config/snappy.php \ No newline at end of file diff --git a/docker/Dockerfile.streamline-emr.arm64 b/docker/Dockerfile.streamline-emr.arm64 index 6f4a9968..3e179e33 100644 --- a/docker/Dockerfile.streamline-emr.arm64 +++ b/docker/Dockerfile.streamline-emr.arm64 @@ -1,9 +1,33 @@ -# FROM streamlinehealth/streamline:signalytic +################################################################################ +# Use known working image to pull in working wkhtmltopdf libraries +# ref: https://stackoverflow.com/questions/56426050/how-to-install-wkhtmltopdf-on-docker-php-fpm-alpine-linux +################################################################################ -# COPY my.cnf /etc/mysql/my.cnf -# COPY mysql-init.sh /var/www/html/.docker/mysql/mysql-init.sh +FROM surnet/alpine-wkhtmltopdf:3.16.2-0.12.6-full as wkhtmltopdf +FROM php:8.2-fpm-alpine3.17 AS app -FROM php:8.2-fpm-alpine +# wkhtmltopdf install dependencies +RUN apk add --no-cache \ + libstdc++ \ + libx11 \ + libxrender \ + libxext \ + libssl1.1 \ + ca-certificates \ + fontconfig \ + freetype \ + ttf-droid \ + ttf-freefont \ + ttf-liberation \ + # more fonts + ; +# wkhtmltopdf copy bins from ext image +COPY --from=wkhtmltopdf /bin/wkhtmltopdf /bin/wkhtmltoimage /bin/libwkhtmltox.so /usr/bin/ + + +################################################################################ +# Copied from previous Dockerfile (v1-rc4) +################################################################################ # Install necessary packages and cleanup RUN set -ex; \ @@ -47,3 +71,9 @@ RUN chmod +x /var/www/html/start_up.sh ENTRYPOINT ["/bin/sh", "/var/www/html/start_up.sh"] EXPOSE 80 3306 + + +################################################################################ +# Update snappy config to fix issues with wkhtmltopdf +################################################################################ +COPY snappy.php /var/www/html/config/snappy.php \ No newline at end of file diff --git a/docker/snappy.php b/docker/snappy.php new file mode 100755 index 00000000..292c811f --- /dev/null +++ b/docker/snappy.php @@ -0,0 +1,56 @@ + [ + 'enabled' => true, + 'binary' => $pdfPath, + 'timeout' => false, + 'options' => [ + 'enable-local-file-access' => true + ], + 'env' => [], + ], + 'image' => [ + 'enabled' => true, + 'binary' => $imagePath, + 'timeout' => false, + 'options' => [ + 'enable-local-file-access' => true + ], + 'env' => [], + ], +];