web-dev-qa-db-ja.com

Ubuntuコンテナー(ascii、utf-8)を使用してdocker(Python、Java、Rubyなど)でアプリを実行する際のエンコードの問題

私のPCではアプリケーションはニースで実行されますが、Dockerにデプロイされると、無効な文字が原因で失敗します。

ubuntu:lastestコンテナとpython3JavaRubyを使用しています。

20
d0x

localeを正しく設定する必要があります。

これは、最小限の正しいDockerfileです。

FROM ubuntu:latest

RUN locale-gen en_US.UTF-8
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8

通常のDockerイメージはロケールを指定しません。それにバッシュしてlocaleを実行すると表示されます:

Sudo docker exec -i -t yowsup3 bash

出典:

35
d0x

上記の解決策を試したところ、docker内でlocale-genコマンドを使用できないことがわかりました。

したがって、この行をRUNコマンドの上に追加するか、追加します。

RUN apt-get update && apt-get install -y locales && locale-gen en_US.UTF-8

これでうまくいきます。

そして、2番目のENV LC_ALL en_US.UTF-8でほとんどの変数を設定できますが、2つが空いているため、3つすべてを設定する必要があります。

0
Mayank Jain