djangoで作っている処理をローカルlinuxで開発し、Google Cloudの中に反映させる。
前回 にGoogle Cloudの本番環境を作った。
作り終わった直後、できてない件があるなって気づいた。
-
ローカル開発環境はcssで画面を緑色系にしてるのを、本番は青色にしたい
-
DBは開発用のDBインスタンスを使ってるので切り替えたい
-
ヘッダの中に「ログアウト」のリンクがあるのが使えない
これはGoogle Cloudとローカルlinuxでそれぞれtemplatesに置くhtmlやsettings.pyを用意しておき、コンテナを起動するときに切り替えればいい。
そこで、dockerのコンテナをdocker-composeで起動するとき、その直前にファイルコピーするようにスクリプトを書き換えた。
結果
ローカルlinuxでこう見えてるのが、

こうなる。

想定しているファイルを用意して上書きコピーしたら、すんなりできた。
データベースも複数あるのを切り替えて使えるようになった。

開発環境では好き放題データベース書き換えてテストできるのは必須やし。
以下、変更実施スクリプト作成内容。
前提
ローカルlinuxもGoogle Cloudも、docker-compose.ymlを複数使ってる。
-
webアプリ、mariadb、gitlab、ubuntu20のrdp環境を起動して帳簿入力
-
oracle起動してちょっとSQL試したいとか、検証するための環境を起動
-
centos7、centos8、ubuntu20など複数のOSフレーバーへsshできるようにし、OS利用してdockerfile作るための環境を起動
それぞれ永続化領域を持たせていて、「今日はcentosの検証作業」とか「今日は帳簿入力」とか使い分けてる。
dockerだと、サーバの役割をホイホイ変えられるから、必要なサービスを必要なだけ起動すればいい。
コンテナ起動のための基礎になるスクリプトはこう書いている。
|
|
cpしている箇所のうち、どれか1つだけコメント箇所を外して使ってる。
コンテナ停止はこう書いている。
|
|
これで起動している状態に関わらず全部停止する。 今回は「webアプリ、mariadb、gitlab、ubuntu20のrdp環境を起動」するdocker-compose-GVISweb.ymlを使うときの話。
切り替えのためのスクリプト
コンテナ起動のためのスクリプトに、それぞれ書き足した。
階層深いのでDOCKER_CONFxって定義してコピー箇所で使った。
右端に⭐️1、2、3って書いてある箇所が環境切り替えのためのコピー箇所。
ローカルlinuxの場合。
|
|
Google Cloudの場合。
|
|
djangoの変更要素
自分の作っている画面はログアウトのボタンがなく、ヘッダにログインURLとログアウトURLが入っている。
同じようなヘッダを他のページで使っているので、できるだけそのまま使いたい。
djangoの変更対象は3つ。 docker-composeで起動するときの⭐️1、2、3でやってる。
⭐️1 DBインスタンスの切り替え
mariadbの接続先を変えるためsettings-gcp-gvis-dklinux.pyとsetteings-nafslinux.pyを用意しておき、settings.pyに置き換えられるようにしておく。

書いてる内容は接続先を1つ有効にしておき、もう1つはコメント化してるだけ。

ローカルlinuxで作ったdjangoソースをGoogle Cloudに持ってきたら、DB切り替えた直後は手動で入力して実行。
|
|
コンテナも再起動しておく。
docker-compose restart sv_django
⭐️2 色変更
ページ内のボタンとか、ヘッダで使われる色合いはcssで定義されている。
cssはstatic/adminのフォルダに入ってる。
ロゴとかの画像変更することもあるので、フォルダごとまとめて用意する。
Google Cloud用とローカルlinux用でcommonBlueとcommonGreenとしてフォルダごと用意しておき、コンテナ起動の前にcommonColorと置き換える。

cssはそれぞれ色を変えておく。GreenとBlueってそれぞれに書く。

⭐️3 ヘッダの切り替え
Header.htmlの元になるファイルをheader-gcp-gvis-dklinux.htmlとHeader-nafslinux.htmlとして用意しておきHeader.htmlへコピーさせる。

ヘッダにログインとログアウトのURLが入っているので、それぞれ書いておく。

ヒントになったこと
現場でruby on railsのソース改変業務をやらせてもらったとき、開発環境で作ったソースをステージング環境・本番環境へ反映させてrakeするとき、コンテナの操作前にファイルコピーして切り替えされてたのを思い出した。
それをdjangoでもできないかってやってみたらできた。