Alpine Dockerイメージフォント問題解決操作

Alpine Dockerイメージフォント問題解決操作

1. フォントを実行し、フォント フォルダーを開いて、使用するフォント ファイルを見つけます。

2. Dockerfile を変更します。例:

alpine-jdkより 
./test.jar /opt/App/test.jar を追加します。
#フォントファイルをコピーします COPY ./simhei.ttf /usr/share/fonts/simhei.ttf 
#文字セットを設定する ENV LANG en_US.UTF-8
#フォントソフトウェアをインストールし、フォント設定を完了します。RUN apk add --update ttf-dejavu fontconfig && rm -rf /var/cache/apk/* 
ワークディレクトリ /opt/App/ 
エクスポーズ8080 
エントリポイント ["java", "-jar"] 
CMD ["test.jar"]

補足: Dockerfile は Alpine イメージをビルドします/Linux は apk を使用してリソース (フォント パッケージ/その他) をダウンロードして設定します 失敗/困難

構築前の注意事項

このエラーが報告された場合:

OCI ランタイムの作成に失敗しました: systemd cgroup フラグは渡されましたが、cgroup を管理するための systemd サポートは利用できません: 不明

daemon.json の "exec-opts": ["native.cgroupdriver=systemd"] を削除してください

個人的な問題

Dockerfile を使用してイメージをビルドする場合、ベース イメージ パッケージの Alpine バージョンを使用すると、ビルドが常に停止します。

[INFO] http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86_64/APKINDEX.tar.gz を取得します
[INFO] http://dl-cdn.alpinelinux.org/alpine/v3.12/community/x86_64/APKINDEX.tar.gz を取得します

このアドレスからダウンロードしてください。ダウンロードに失敗するとエラーが報告されるようになります。

[エラー] コマンド '/bin/sh -c set -xe && apk --no-cache add ttf-dejavu fontconfig' がゼロ以外のコードを返しました: 2

または

[エラー] コマンド '/bin/sh -c set -xe && apk --no-cache add ttf-dejavu fontconfig' がゼロ以外のコードを返しました: 1

Docker イメージ ソースを変更しようとして失敗した後、他のイメージ ソースを探し始めました。

原因

alpine APK ミラーのソース アドレスは /etc/apk/repositories ファイルにあります。これはダウンロード速度が印象的な外部ミラーです。数百 KB をダウンロードするのに 30 分以上かかります。だから、住所を国内のアリソースに変更する必要があります

デモを解く

adoptopenjdk/openjdk8-openj9:alpine-slim より
メンテナー *************@*****.com
mkdir -p /cim-railway/authを実行します。
#テストには検証コード フォント パッケージを使用します。最初のステップは、apk ソースを国内の Alibaba ソースに置き換えることです。最初のステップがないと、ダウンロードは困難になります。RUN echo -e 'https://mirrors.aliyun.com/alpine/v3.6/main/\nhttps://mirrors.aliyun.com/alpine/v3.6/community/' > /etc/apk/repositories \
 && apk アップデート \
 && apk アップグレード \
 && apk --no-cache ttf-dejavu フォント設定を追加

Dockerを使わずにイメージを構築する場合

/etc/apk/repositoriesファイル内のミラーアドレスの2行を次のアドレスに置き換えるだけです。

https://mirrors.aliyun.com/alpine/v3.6/main/

https://mirrors.aliyun.com/alpine/v3.6/community/

上記は私の個人的な経験です。参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。間違いや不備な点がありましたら、遠慮なくご指摘ください。

以下もご興味があるかもしれません:
  • alpineをベースにdockerfileで作成したtomcatイメージの実装
  • alpineをベースにdockerfileで作成したクローラーScrapyイメージの実装
  • Docker で php-nginx-alpine イメージをゼロから構築する方法
  • Docker Alpine イメージのタイムゾーン問題に対する完璧な解決策

<<:  XHTML コードで Marquee タグを使用する方法

>>:  ネイティブ JavaScript を使用した Web 計算機の実装

推薦する

Linux スレッド間の同期と排他制御の知識ポイントのまとめ

スレッドが同時に実行される場合、スレッドがリソースを競合してデータの曖昧さが生じるのを防ぐために、重...

el-table カプセル化に基づくドラッグ可能な行と列、および選択列コンポーネントの実装

効果環境が必要ビュー要素UIドラッグアンドドロッププラグインSortable.js必要な構成プロパテ...

Windows と Linux 間のリモート デスクトップ接続

Linux へのリモート デスクトップ接続といえば、まず VNC の使用を思い浮かべるかもしれません...

Vue+WebSocket ページでの長時間接続のリアルタイム更新

最近、Vue プロジェクトではデータをリアルタイムで更新する必要があります。折れ線グラフは 1 秒ご...

Echarts 基本入門: 棒グラフと折れ線グラフの一般的な構成

1eChartsの基本手順4つのステップ1 DOMコンテナを見つける2 初期化3 設定オプション4 ...

CSS3 FlexBox の伸縮自在なレイアウトを 10 分で理解する

基本的な紹介特徴Flexbox は、よりシンプルで効率的なレイアウト方法を提供する CSS 表示タイ...

MySQL関数の簡単な紹介

目次1. 数学関数2. 文字列関数3. 日付関数4. 暗号化機能主な MySQL 関数は次のように紹...

クロスオリジン画像リソース権限(CORS 対応画像)

HTML 仕様書では、画像の crossorigin 属性が導入されています。適切なヘッダー情報 ...

js キャンバスはスライダー検証を実現します

この記事の例では、スライダー検証を実装するためのjsキャンバスの具体的なコードを参考までに共有してい...

テーブルセルの幅tdの設定は無効であり、内部コンテンツによって常に引き伸ばされます

テーブルページを作成するときに、td に設定された幅が無効になることがあります。td の幅は常に内部...

MySQL 8.0 における非同期レプリケーションの 3 つの方法について簡単に説明します。

この実験では、空のデータベース、オフライン、オンラインの 3 つのモードで、1 つのマスターと 2 ...

HTML サブタグと sup タグ

今日はあまり使わないHTMLタグ「subタグ」と「supタグ」を紹介します。定義と使用法: <...

入力が完了したことを検出し、次のコンテンツを自動的に入力する HTML を実装する方法

前回の記事では、入力完了の簡単な検出を実現しましたが、今回はさらに一歩進んで、入力が完了した後に次の...

Dockerがコンテナサービスを停止または削除できない問題の解決策

序文今日、開発者から、コンテナ サービスを停止、rm (docker rm -f)、または強制終了で...