クラウド コストを最小限に抑えるために、Docker コンテナーに最小限の TexLive をインストールしようとしています。私の Web アプリは、UPC コード付きの製品パッケージ ラベルを作成します。Docker コンテナーでは、UPC コードを生成するときに「invalidfont」エラーが発生します。ローカルの完全な LaTex インストールを使用して完璧にコンパイルされるため、これはパッケージ依存関係の不足から生じる問題であると確信しています。不足している可能性のあるものについて何かアイデアはありますか? または、TEX ファイルを正常にコンパイルするために使用されたパッケージを正確に見つけて、それらのパッケージのみをコンテナーにインストールする方法はありますか?
これは私の Dockerfile 内の最小限のインストール スクリプトです。最小限のインストール ("scheme-basic") に加えて、tlmgr を使用して fontspec、pst-barcode、pstricks、xcolor、xkeyval、pgf、luapstricks、pst-tools、marginnote、phonetic をインストールしていることがわかります。
# Use the most up-to-date version of Ubuntu LTS
FROM ubuntu:22.04
# Install necessary system utilities
RUN apt-get update && \
apt-get install --no-install-recommends -y \
wget \
perl \
python3 python3-pip python3-dev python3-venv \
fontconfig \
ghostscript && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
# Download and install TeX Live
RUN wget https://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz && \
tar -xzf install-tl-unx.tar.gz && \
cd install-tl-* && \
echo "selected_scheme scheme-basic" > texlive.profile && \
./install-tl -profile texlive.profile && \
cd .. && \
rm -rf install-tl* install-tl-unx.tar.gz
# Set the PATH to include the TeX Live binaries
ENV PATH="/usr/local/texlive/2024/bin/aarch64-linux:${PATH}"
# Install missing LaTex packages
RUN tlmgr update --self --all
RUN tlmgr install fontspec pst-barcode pstricks xcolor xkeyval pgf luapstricks pst-tools marginnote phonetic
# Set the working directory to root's home directory
WORKDIR /root
# Copy the fonts and images directories and TEX file
COPY fonts /root/fonts
COPY img /root/img
COPY label.tex /root/label.tex
# Move and cache fonts
RUN mkdir -p /usr/share/fonts/custom && \
cp /root/fonts/*.otf /usr/share/fonts/custom/ && \
fc-cache -fv
RUN ls -la /usr/share/fonts/custom
RUN fc-list
# Expose the port the app runs on
ENV PORT 8080
ENV HOST 0.0.0.0
EXPOSE 8080
# Use the virtual environment's Python as the default
ENV PATH="/root/venv/bin:$PATH"
# Define the command to run the app
CMD ["lualatex", "label.tex"]
これは私の label.tex ファイルです。 のインスタンスが 3 つあることがわかりますpsbarcode
が、 で囲まれた最初のインスタンスだけがtikzpicture
エラーをスローします。
\documentclass{article}
\usepackage{fontspec}
\setlength\parindent{0pt}
\usepackage{pst-barcode}
\usepackage{phonetic}
\usepackage{geometry}
\usepackage{graphicx}
\usepackage{tikz}
\geometry{paperwidth=4in, paperheight=2in, top=-0.5in, bottom=0.125in, left=0.125in, right=0.125in}
\renewcommand{\textsuperscript}[1]{\raisebox{0.8ex}{\scalebox{0.66}{#1}}}
\begin{document}
\fontsize{7pt}{8pt}\selectfont
\textbf{Company{\sffamily\textregistered} Product\\
Designed by Company\\
Assembled in USA\\
Model MP1
}
\begin{figure}
\begin{tikzpicture}[overlay, remember picture]
\node[xshift=-1.5in,yshift=-0.45in] at (current page.north east) {\psbarcode{196852002825}{includetext width=1.3 height=0.35 textsize=9 textyoffset=-2 textxoffset=-6}{upca}};
\end{tikzpicture}
\end{figure}
\vspace{0.075in}
\textbf{(A) Serial No. A12345678\\
}
\begin{pspicture}(0,0.35in)
\psbarcode{A12345678}{width=0.31 height=0.31}{qrcode}
\end{pspicture}
\vspace{0.075in}
\textbf{(B) Serial No. B12345678\\
}
\begin{pspicture}(0,0.35in)
\psbarcode{B12345678}{width=0.31 height=0.31}{qrcode}
\end{pspicture}
\vfill
\mbox{}\hfill \textbf{\textcopyright 2024 Company All rights reserved.}
\end{document}
これは私の間違いです:
[1 ! luapstricks: "./labe l-docker.tex:29" から PS コードを実行中に "invalidfont" エラーが発生しました。...not:N \tex_shipout:D
\box_use:N \l_shipout_box
_発送ドロップファーストページ...l.60 \end{document}
? ! 緊急停止。 ...not:N \tex_shipout:D \box_use:N \l_shipout_box
_発送ドロップファーストページ...l.60 \end{document}。まだ使用中のノード メモリの 5544 ワード: 80 hlist、14 vlist、1 rule、14 disc、10 local_par、1 dir、182 glue、41.
kern、43 pestal、271 glyph、90 attribute、57 glue_spec、90. attribute_list、1 temp、2 if_stack、4 write、2 save_pos、18 late_lua、
34 pdf_literal、14 pdf_colorstack ノードの使用可能なリスト: 2:3,5:2,10:4
! ==> 致命的なエラーが発生しました。出力 PDF ファイルは生成されませんでした。