プログラマー社長の「日々発見」

ワードプレス 、仕事でつかえる人工知能・機械学習プログラムの開発を行っていく中での日々の発見のブログ

カテゴリ: docker

自分の中で、最も腑に落ちたのがこの方法。

https://finnian.io/blog/ssl-with-docker-swarm-lets-encrypt-and-nginx/


docker certbot image を使う。
考え方は以下の通り。

1・docker run で certbotコンテナを作成し、マスターサーバー上とコンテナ上で、letsencryptの証明書をシェア
2・certbot コンテナを閉じる
3・1で作成されたマスター上の証明書を、container上のwebサーバーに読み込ませる
 

 https://github.com/SteveLTN/https-portal というのもあって、自動で全てやってくれるものもある。
試したんだけど、uwsgiコンテナとうまく連携できず。
 

なお、今回は、

nginx, app(flask, python, uwsgi), mysql のコンテナを3つ作成して環境構築を行った。


 

docker-compose を使っていて phthon, mysql にて

RuntimeError: cryptography is required for sha256_password or caching_sha2_password

というエラーが出た場合。

これは、mysql の mysql データベースー>user テーブル の plugin に 「caching_sha2_password」が設定されるために発生する。

一つの方法として、docker-compose に

command: --default-authentication-plugin=mysql_native_password

 を追加して対応する方法がある。
このようにすれば、デフォルトでは、 mysql_native_password が入り、RuntimeError: cryptography is required for sha256_password or caching_sha2_password のエラーがなくなる。

flask_sqlalchemy を使っていて、そのモジュールでの回避方法がなさそうだったため、この方法で対応した。

 

docker compose up をしたら、

Bad response from Docker engine

のエラーが出た。

以下の方法で解決。

Docker の Preferences をクリック。

スクリーンショット 2018-11-14 22.25.20

上記画面の右端の「Reset」をクリック。
上記画面が表示されるので、「Restart」をクリック。

これで、docker compose up が正常にできるようになった。
 

 


Docker内のubuntu で時間設定をしようと、timedatectl を実行したがエラーになって動かなかった。

下記のようにすると正常に動いた。

apt-get install -y tzdata ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime 


 

Dokcer Image より Ubuntu サーバーのコンテナを作った時の日本語対応方法。

以下のコマンドを実行すること


apt-get install -y language-pack-ja-base language-pack-ja
update-locale LANG=ja_JP.UTF-8 LANGUAGE=ja_JP:ja
export LANG=ja_JP.UTF-8
export LC_ALL=ja_JP.UTF-8
export LC_CTYPE=ja_JP.UTF-8

 


 

↑このページのトップヘ