I have a dockerized nodejs application. I use libreoffice for converting to PDF.
How can I add libreoffice to dockerfile with nodejs app? And how can I make the app be able to use the libreoffice app?
FROM node:16.8.0-alpine
# Create app directory
WORKDIR /usr/src/app
# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5+)
COPY package*.json ./
RUN apk add --update python3 make g++ && rm -rf /var/cache/apk/*
RUN npm install
# If you are building your code for production
#RUN npm ci --only=production
# Bundle app source
COPY . .
RUN npm run build
EXPOSE 80:80
CMD [ "node", "build/index.js","STAGING"]
2
Answers
Adding the following to your Dockerfile should install libreoffice
https://pkgs.alpinelinux.org/package/edge/community/x86/libreoffice
Adding the following line installs LibreOffice
It is also necessary to install Java Runtime Environment (JRE) in the container, which is required for LibreOffice to function correctly. Adding the following line installs the OpenJDK 8 JRE package on Alpine Linux.
It is possible to run LibreOffice commands in a Node.js application without installing any additional libraries. You can use the
child_process
module in Node.js to execute any shell command. Thechild_process
module provides several methods to spawn new child processes, which can be used to execute shell commands. In the following code, I have used the exec method to run the LibreOffice command.