mirror of
https://gitlab.com/signalytic/client-external/streamline/streamline-emr.git
synced 2026-09-11 18:51:31 +00:00
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).
78 lines
2.4 KiB
Docker
78 lines
2.4 KiB
Docker
################################################################################
|
|
# Use known working image to pull in working wkhtmltopdf libraries
|
|
################################################################################
|
|
|
|
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 |