実際には、問題を解決するために一週間かかりました

概要

実際に週に解決されていない最近の使命を考えたことはありません、まだ完了していない、土曜日自宅で忙しい一日行われ、日曜日の朝までフラッシュは、完成しました。率直に言って、私は長い間、この経験を持っていなかった、と数日の技術的な問題に悩まされた、ボーッこの種のが、幸い、最終的に問題を解決しました。あなたがに似て、この特定のタスクに遭遇していないかもしれないが、私はまだ皆のための問題を解決するプロセスを共有したいが、方法は、技術的な問題を解決する方法について話をします。

背景問題

あなたにはマイクロサービスシステム(主にJavaの)オープンソースのPythonプロジェクト会社のアクセスする必要があります。オープンソースプロジェクトは、以下を参照しましたopaopaいくつかのプロジェクトは、次のような根本的なC ++ライブラリに依存openImageIO

分析

このタスクを受信すると、実際には、私はあなたが完了する必要があり、時間がタイトで、ほとんどの週はかなり緊張していました。自分の状況に合わせて、このタスクを評価するために、いくつかの課題があります。主に

  • 私は数年のPythonコード、C ++、および不慣れを書いていません。
  • 複雑なドッキングウィンドウのイメージを構築する上での経験の欠如
  • マイクロシステムでのPython言語サービスの経験にアクセスできません
  • オブジェクトの無い相談単独戦争、

まず、私はこの仕事に解体の数を作成し、5つ星のうち難易度の下で評価します

  • Pythonの開発環境を構築するには、1つのローカルから実行する必要がありopa、プロジェクトの開発、デバッグ。***
  • opaこのプロジェクトは、安らかなインターフェースを提供し、Webプロジェクトに変換します。**
  • サービスセンターに登録されているサービス*
  • 外部コール用のJavaクライアントを提供します*
  • ドッキングウィンドウのイメージを構築し、K8S上のサービスを展開。***

私は、このタスクは、実際に解決するプロセスに非常に多くの問題が発生したと思ったことはありません

解決プロセス

opaこのプロジェクトは、Webプロジェクトに変換します

このタスクは、インデックス3つ星の評価は難しいスタートで、実際にそこにいくつかの困難がありますが、検索エンジン、複合インデックス2星を使用して行うことができますが、実際の時間は、1Dを過ごしたことがわかりました

IDE: pycharm
环境: py2/py3
包构建: pip
复制代码

遭遇した大きな問題があります。

python2、のpython3の問題の開発環境がインストールされているPY3は、opaプロジェクトがPY2プロジェクトですので、ツールの使用は下の変換Pythonのターンのpython3

Tucao、実際のpython3互換性のない構文python2、などの印刷などというようにしなければならなかったの下に。しかし、メンテナンスコストを増加させ、python2ののpython3での構文は、内部で実行することができますが、これは、2-> 3のメジャーバージョン少しピットの父である、実際にそうすることができる、と古いものを廃棄することなく、中にロックされました

パッケージのバージョンの問題

これは私のためのpythonパッケージ管理は、単にナンセンスである、とショックを記述するのにも過言ではないと、Javaのを書くことです。トラフのポイント

  • プロジェクトの依存関係ファイルいいえ
  • 代わりに、パッケージのバージョンを指定します

しかし、プロジェクト導入パッケージの多くので、私も一人の個人のアップにインストールされている、この点を絡まっていません。それは正の子供たちが8つのプロジェクトを維持する必要がある場合は、Pythonは今持って、会場の必要があるため、パッケージ管理ツールは、

opaこのプロジェクトは、Webプロジェクトに変換します

このタスクは、予想よりも早く完了し、使用flaskしてパッケージ、フラスコのチュートリアルでは、実際に一日を過ごすために取得します

外部コールを提供するために、サービスセンター&& Javaクライアントに登録されているサービス

この問題は、コンテンツ、純粋な肉体労働、何百回も解決する日ではありません

ドッキングウィンドウのイメージを構築し、K8S上のサービスを展開

このステップでは、本当に私は解決されていない2日間を過ごし、私を苦しめることを期待していなかった、評価するために始めるの3つ星です。週末前に解決を取得します。いくつかのメモはいくつかを記録して問題は、10+に遭遇しました

1.はpip install、バージョンアップをパッケージのnoバージョンを発見し、その後のpython3を必要とし、実際には、環境はpython2あるxbuba.com/questions/5 ...

バージョンを指定することにより、最終的な和解

pip install -i https://mirrors.aliyun.com/pypi/simple  numpy==1.16.4 

复制代码

質問2.ネットワーク

这个问题折磨的我痛不欲生,欲哭无泪。因为需要验证构建是否正确,要反复的build image,每次install 各种package, pip install 
python包,需要半小时才完成的了。在家连vpn,网络更加慢,时间更长,这让我无数次拷问自己,都2019年了,我居然还在被网络带宽困扰,人活着的意义到底是为了什么,我为什么要把我美好的人生浪费在这里。

这个问题主要通过3方面解决

- docker multi stage build 

  构建多个docker base镜像,然后from base镜像,这样可以减少image的构建时间

-  更改下载软件的地址源

   比如apt,yum的,pip 的。

- 将另外一些需要wget的包下载下来,扔到内网,访问内网地址
复制代码

会社の内部のJavaベースの画像、およびPythonのプロジェクトに基づいて基本イメージを構築する必要性から構築3.dockerイメージ。付与のための始め

FROM opa.image
FROM company.image
复制代码

実際のドッキングウィンドウでのみ、ベースから無視されますから最初のを継承することができます。これは、多段階のビルドを使用する必要があり、新たな層の詳細へ前の層の内容をコピーすることができ、多段階のビルド

ダイナミックリンクライブラリ++ 4.C問題

多段時間の構築、 opa コンテンツのコピーを超える画像の時、エラービン/時間を実行します。C ++ライブラリの欠如。C ++ライブラリは、カーネルが直接無駄にファイルをコピーするために必要とされています。

5.ubuntuは、CentOSの質問は、同社の画像CentOSのシステムに基づいて、Ubuntuのに基づいており、いくつかは、互換性のある構文オープンソースではありませんされています。

究極のソリューション

私の最大の問題は、問題がドッキングウィンドウのイメージの問題は、2台の画像に基づいているか、C ++、PythonやJavaのドッキングウィンドウのコンテナを構築できるよう構築することで悩ま。最後の問題は、フラッシュのきっかけから来て解決します。以下に示すように、プロジェクトはおおよそ環境が必要です

私は初期の問題に巻き込まれています

  • Ubuntuの、CentOSの
  • 様々なパッケージは、エラーの問題をインストールします
  • 問題のパッケージのバージョン
  • C ++库make installを
  • ネットワークダウンロードの問題

だから、多くの質問が絡み合っている、心が明確ではありません。私の最大の問題は、問題がドッキングウィンドウのイメージの問題は、2台の画像に基づいているか、C ++、PythonやJavaのドッキングウィンドウのコンテナを構築できるよう構築することで悩ま。最後の問題は、フラッシュのきっかけから来て解決します。

私のために、主な問題は、元のプロジェクトのビルドのドッキングウィンドウの画像をあるが、同社の画像内とPythonパッケージをインストールし、新しいコード、主にJavaランタイム環境、実行のjarパッケージだけでなく、いくつかのピップを追加し、どのので彼らは比較的簡単です。

だから、思考の変更は、もはや会社のCentOS環境の画像に基づいてませんが、上のopa画像、あなたは、元の画像を移動することはできません。それらのものと同等の私はすべてブロックさに慣れていませんよ。

基本イメージの構築

FROM company.image AS builder
// 将环境基于原来的image
FROM base.image
// copy java环境到image
COPY --from=builder         /usr/lib/jvm/jdk1.8.0_172 /usr/lib/jvm/jdk1.8.0_172
复制代码

そして、ベースイメージに基づいて、Python環境を構築します。最後の問題は解決されます。

概要

この問題を解決する過程で、私はこの問題を解決するためにあなたを助けることができるいくつかの基本的な原則をまとめます

  1. リズムを把握するために、自分のスキルを理解します

    評価するのは良いと困難な課題を解決するための初め、で、常に解決プロセスの推定時間と比較して、予想を超えた、タイムリーな調整の必要性、しっかりとすべてが制御されていることを確認し、ライブタスクのリズムを把握します。

  2. 分類の問題の一次および二次の問題を区別するために、無視できる程度であり、解決する必要があるものを区別します。

    あなたは多くの問題が発生する可能性があり、これらの問題は、任務の延長につながる多くの問題なので、深いトラバーサル、につながる、より深く行く、欲求不満の深い意味があります。のみ対処されなければならない問題を解決するため、フォローアップの下を記録し、必要ありませんが、あなたが問題に興味を持っています。

  3. 除算などを解決するために、あなたのタスクを征服することは行われないことがあり、ネットワークが答えを見つけることができません。タスクを解体する必要のある、背景がたくさんあるだろう関連する経験を持っていた人に相談し、単純化し、問題の複雑さを抽象化し、通信をより効率的にすることができ、迅速な問題解決

修道院長の方法技術の練習から始まる修道院の番号[社会的関心]アボットは、更新された記事を受け取るために初めて、

ここに画像を挿入説明

参照

xbuba.com/questions/5...

docs.docker.com/develop/dev...

docs.python.org/zh-cn/3.7/l...

おすすめ

転載: juejin.im/post/5db98bad5188253ea9439130