ドッキングウィンドウ7-Dockerfileは独自のイメージファイルを作成することを学びます

序文

あなたがPythonの自動化テスターであれば、自分のマシンまたはサーバー上でプロジェクトに取り組んで会社では1日あなたついに完全なインタフェースの自動スクリプトは、一般的に、スクリプト、しっかりと問題はないの試運転に使用されます。
しかし、夜に仕事から家には、Linuxサーバを発見し、チュートリアルbarabaraインストール手順の全体の束を見つけるために、インターネットの後、再インストールpython3.6バージョン、自宅であなたの手を試してみたいです。

あなたが会社に戻って次の日には、リーダーシップはあなたがさらに行われ、このスクリプトを置くことができないと言うあなたは再びpython3.6環境を繰り返し、スクリプトを実行してインストールして、サーバー環境に(ネイティブ環境に無理があります)いくつかの依存関係。
幸運だけでなく、ネットワークのPIP-ラインインストール、不運は、ローカルでのみインストールすることができ、外部のネットワークに接続することはできません。あなたは人生を不思議に始めて以来、なぜこれほど多くの時間が私はああ設置環境を繰り返す必要があります。

100台の異なるサーバーならば、私はあなたが考えて以来、100ああをインストール奨めされていない:私は仮想python3.6環境を行うことができない、私は依存関係を事前にインストールする必要があります。
うまくマシンを使用する必要があります(githubのに似ている)仮想倉庫環境に達し、それは過去のOKの重要な輸入ですので、ドッキングウィンドウ作る独自のイメージは、今日と言うことである、不可欠ファイルDockerfileは、独自の画像ファイルのものを作ります。

Dockerfileプロフィール

Dockerfileドッカーイメージがビルドファイルを構築するために使用され、スクリプトがコマンドと設定パラメータのシリーズです。
簡単に言えば、Dockerfileは、ファイル内に、私たちに実行するために、最終的なキーのインストール手順と環境の各ステップで、あなたは、最終的な環境を作りたいです。

Dockerfileドッカーイメージがビルドファイルを構築するために使用され、スクリプトがコマンドと設定パラメータのシリーズです。

ドッカー三部作を構築します:

  • dockerfileファイルを書きます
  • ドッキングウィンドウのビルド建物の画像・イメージ・ファイル
  • コンテナは、実行を実行しドッカー

Dockerfileに関する命令

Dockerfileは、すべてのコマンドを含むテキストファイルのミラーイメージを作成することで、あなたは、Dockerfileの内容に基づいてコマンドを構築するドッキングウィンドウでミラー構築することができます
Dockerfileの下で基本的な文法構造を導入構築する方法の前に。

コマンドオプションを以下Dockerfile:

  • ベース画像から、新たな画像を基礎とするカレントミラーで
  • MAINTAINERミラーのメンテナの名前と電子メールアドレス
  • RUNコンテナを構築するときに、コマンドを実行する必要があります
  • CMDは、実行を開始したときにコンテナを指定するためのコマンド。dockerfileは、複数のCMDコマンドを持つことができますが、最後のものだけが動作する、CMDパラメータは、ドッキングウィンドウの実行後に置き換えられます。
  • 外部ポート番号にさらさ現在のコンテナを公開
  • ENV環境変数は、ミラーを構築するためのプロセスを設定します
  • ミラーとADDコマンド処理URL内のホストにディレクトリ内のファイルをコピーして、自動的にtarアーカイブを解凍ADD
  • COPYのCOPY:同様のADDは、ミラーにファイルやディレクトリをコピーし、それが唯一のコピーである、とURLの処理が自動的に圧縮されたtarを解凍しません。
  • ENTRYPOINTは、実行を開始したときに、コンテナをコマンドに指定しました。ENTRYPOIT目的とCMDは、指定されたコンテナ内にあり、プログラムパラメータを開始します。
  • 永続的なデータストレージおよび作業用ボリュームデータボリュームのコンテナ、
  • USERユーザ名または指定されたコンテナでのUIDの実行は、以降のRUNは、指定したユーザーを使用します
  • コンテナが作成された後、指定WORKDIR、作業ディレクトリに記録され、デフォルトのターミナル、足場
  • 継承されたDockerfileを構築するときONBUILDのコマンドを実行し、父は親がトリガされonbuildミラーリング、キルトの後に連続してミラーリング。

Dockerfileを書きます

、カレントディレクトリのドッキングウィンドウ - ランでフォルダを作成したフォルダにcd、新しいDockerfileに触れ、viとし、ファイルを開いて編集を開始

[root@yoyo ~]# mkdir docker-run
[root@yoyo ~]# cd docker-run/
[root@yoyo docker-run]# touch Dockerfile
[root@yoyo docker-run]# vi Dockerfile 

編集は次のとおりです。

# 基于python3.6.8镜像
FROM python:3.6.8

MAINTAINER yoyo  <[email protected]>

# 更新pip
RUN pip install --upgrade pip 

# 工作目录
WORKDIR /code
ADD . /code

# pip安装依赖包
RUN pip install -r requirements.txt

# 传递参数
ENTRYPOINT ["pytest"]

# 默认显示help帮助信息
CMD ["--help"]

requirements.txt

pythonのrequirements.txtは、依存パッケージであるフリーズコマンドにより製造することができます

PIP3フリーズ> requirements.txt

[root@yoyo docker-run]# cat requirements.txt 
APScheduler==3.5.3
asn1crypto==0.24.0
atomicwrites==1.3.0
attrs==18.2.0
backports.csv==1.0.7
bcrypt==3.1.7
beautifulsoup4==4.7.1
cached-property==1.5.1
certifi==2018.11.29
cffi==1.12.3
chardet==3.0.4
cryptography==2.7
DBUtils==1.3
defusedxml==0.5.0
diff-match-patch==20181111
Django==2.1.4
django-bootstrap3==11.0.0
django-crispy-forms==1.7.2
django-formtools==2.1
django-import-export==1.2.0
django-ranged-response==0.2.0
django-reversion==3.0.3
django-simple-captcha==0.5.10
django-stdimage==4.0.1
docker==3.7.3
docker-compose==1.24.1
docker-pycreds==0.4.0
dockerpty==0.4.1
docopt==0.6.2
et-xmlfile==1.0.1
future==0.17.1
httplib2==0.12.1
idna==2.7
jdcal==1.4
jsonschema==2.6.0
more-itertools==6.0.0
mysqlclient==1.4.2.post1
odfpy==1.4.0
openpyxl==2.6.1
paramiko==2.6.0
Pillow==5.4.1
pluggy==0.6.0
progressbar2==3.39.3
py==1.7.0
pycparser==2.19
pymssql==2.1.4
PyMySQL==0.9.3
PyNaCl==1.3.0
pytest==3.6.3
python-utils==2.3.0
pytz==2018.7
PyYAML==3.13
requests==2.20.1
six==1.12.0
soupsieve==1.7.3
tablib==0.13.0
texttable==0.9.1
tzlocal==1.5.1
urllib3==1.24.1
websocket-client==0.56.0
xlrd==1.2.0
xlwt==1.3.0

建物のイメージファイルを作成

ドッキングウィンドウのビルドコマンドはDockerfileを使用してミラーを作成するために使用されます。オプションの説明:

  • -f:Dockerfileが使用するパスを指定します。

  • --pull:鏡の新バージョンを更新してみてください。

  • --quiet、-q:Quietモード、唯一の出力画像IDの成功の後、

  • --tag、-t:画像の名前とラベル、典型的には、名前:タグ名や形式は、ビルドに画像ラベルの複数に提供されてもよいです。

-tパラメータ設定画像のタグ名とタグ名yoyo_pytes v1が、注意が最後尾のポイントがあります。

V1:ドッキングウィンドウは、-t yoyo_pytestを構築します。

[root@yoyo docker-run]# docker build -t yoyo_pytest:v1 .
Sending build context to Docker daemon  11.78kB
Step 1/8 : FROM python:3.6
 ---> cfcdf565ff94
Step 2/8 : MAINTAINER yoyo  <[email protected]>
 ---> Using cache
 ---> f523b919fcf9
Step 3/8 : RUN pip install --upgrade pip
 ---> Using cache
 ---> 3399b50dab4e
Step 4/8 : WORKDIR /code
 ---> Using cache
 ---> 7223a20e17fd
Step 5/8 : ADD . /code
 ---> 650b554ccd6c
Step 6/8 : RUN pip install -r requirements.txt
 ---> Running in 0e49d444f7d8

動作中のようなステップを、実行することで見ることができます。ステップ1/8

実行が完了した後、生成された画像は、ドッキングウィンドウの画像で見ることができます

[root@yoyo docker-run]# docker images
REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE
yoyo_pytest                v1                  6b4267ce7ac4        21 seconds ago      1.02GB
[root@yoyo docker-run]# 

実行実行コンテナ

Test_h.pyは、現在のディレクトリに新しいファイルを作成し、テストスクリプトを作成pytest

import pytest

# ** 作者:上海-悠悠 QQ交流群:717225969**
def test_one():
    print("正在执行----test_one")
    x = "this"
    assert 'h' in x

def test_two():
    print("正在执行----test_two")
    x = "hello"
    assert x

def test_three():
    print("正在执行----test_three")
    a = "hello"
    b = "hello world"
    assert a in b

if __name__ == "__main__":
    pytest.main(["-s", "test_h.py"])

ドッキングウィンドウの実行実行コンテナを使用します

  • -it -tドッカーので、入力がオープンのままであるように疑似端末入力標準コンテナ、-i標準コンテナに割り当てられた、結合しました。
  • とき--rmコンテナが終了すると、自動的に明確なコンテナ。--rmオプションは-dと一緒に使用することはできません
  • -v作業ディレクトリコンテナ/コード$ PWDホスト、つまり、現在のディレクトリにマウント
  • yoyo_pytest:v1のコンテナ名とタグ名
  • 後でtest_h.py実行するスクリプトの名前が続きます
[root@yoyo docker-run]# docker run -it --rm -v "$PWD":/code yoyo_pytest:v1 test_h.py  -s
================================================================== test session starts ==================================================================
platform linux -- Python 3.6.9, pytest-3.6.3, py-1.7.0, pluggy-0.6.0
rootdir: /code, inifile:
collected 3 items                                                                                                                                       

test_h.py 正在执行----test_one
.正在执行----test_two
.正在执行----test_three
.

=============================================================== 3 passed in 0.01 seconds ================================================================
[root@yoyo docker-run]# 

PythonインタフェースのQQグループ:717 225 969

おすすめ

転載: www.cnblogs.com/yoyoketang/p/11397597.html