Files
streamline-emr/docker/Dockerfile.streamline-emr.arm64
T
alec.turner a47c7b3d98 Fix wkhtmltopdf bugs
The wkhtmltopdf library does not work with the latest version of alpine. To
workaround this, a known working image based on an older alpine image is pulled
in and relevant libraries copied to the target image.

The `snappy` package required a few updates to support this, including setting
the wkhtmltopdf binary path explicitly and to enable access to local files
(disabled by default).
2024-05-01 17:03:14 -07:00

79 lines
2.5 KiB
Docker

################################################################################
# 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
################################################################################
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 Dockerfile (v1-rc4)
################################################################################
# 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