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 計算機の実装

推薦する

MySQLにおけるrow_numberの実装プロセス

1. 背景一般的に、データ ウェアハウス環境では、row_number 関数を使用して特定のディメン...

小さな画面のモバイルデバイス向けにWebページを設計する際に注意すべきこと

その理由は、このタイプの Web ページが WAP と呼ばれるワイヤレス プロトコルから生成されたた...

ブートストラップテーブルの使い方のまとめ

この記事では、bootstrapテーブルの使い方を参考までに紹介します。具体的な内容は次のとおりです...

vue-amap のインストールと使用手順

以前、Amap API を非同期にロードする方法を紹介しました。今回は、vue-amap の使用方法...

...

Zabbixのカスタム監視項目とトリガーについて

目次1. 監視ポート関係の説明操作する2. 監視サービス関係の説明操作する3. テンプレートのインポ...

Nginx 環境での WordPress マルチサイト構成の詳細な説明

WordPress のマルチサイト機能を使用すると、1 つの WordPress プログラムをインス...

Ckeditor + Ckfinderを使用したJavaScriptファイルアップロードケースの詳細な説明

目次1. 準備2. 減圧3. 統合を開始する1. 準備Ckeditor_4.5.7_full + C...

Centos7 での MySQL 5.7.20 のインストールと設定に関する詳細なチュートリアル

1. 公式 Web サイトから MySQL 5.7 インストール パッケージ (mysql-5.7....

Vue ベースの円形スクロールリスト機能を実装する

注: 親コンテナーに高さと :data='Array' および overfolw:h...

データバインディングとリストデータの表示にはVue3を使用する

目次1. Vue2との比較1. Vue3の新機能2. Vue2とVue3の応答原理の比較3. 配列の...

Navicat 接続 MySQL エラーの説明分析

目次環境仮想マシンバージョンMySQL バージョン事前準備MySQLの実行ステータスを確認するルート...

Vue.$set の失敗の落とし穴の発見と解決

偶然、プロジェクト内でVue.$setが無効であることがわかりましたデータ フィルタリングを追加する...