2016-05-02 13 views
1

Shippableは、ドッキング・イメージのビルドを自動化し、暗号化された環境変数を渡す2つの理由から使用しています。私はビルドを自動化することができますが、変数を渡すことはできません。ShippableからDockerへの環境変数の受け渡し

私はプロジェクト設定で出荷可能なテキストボックスに環境変数を入力することで起動します。

SECRET_KEY=123456 

私は「暗号化」ボタンを押して、出荷可能なリターンをクリックします。

- secure : hash123abc... 

私はこれを置きます私のshippable.ymlファイルにハッシュ。次のようになります。

language: python 

python: 
    - 2.7 

build_image: myusername/myimagename 

env: 

- secure : hash123abc... 

build: 
post_ci: 
    - docker login -u myusername -p mypassword 
    - docker build -t myusername/myimagename:latest . 
    - docker push myusername/myimagename:latest 

integrations: 
hub: 
    - integrationName : myintegrationname 
    type: docker 
    branches: 
    only: 
     - master 

自動ビルドが動作します。しかし、私が試してみると:

sudo docker run myusername/myimagename:latest echo $SECRET_KEY 

私は何も得られません。 (この場合のSECRET_KEYに)環境変数を設定します

私Dockerfileは、次のようになります。

FROM python:2.7.11 

RUN apt-get update 

RUN apt-get install -y git 

RUN get clone https://github.com/myusername/myrepo.git 

ENV SECRET_KEY=$SECRET_KEY 

私がそれを見るようMYロジックを説明するために役に立つかもしれません。

出荷可能なプロジェクトビルドは、(repoプッシュまたは手動で)トリガーされます。セット - :

  • がDockerfile
    • Dockerfileに基づいて新しいイメージを構築するSECRET_KEY環境変数に設定し、最初のイメージを構築します。shippable.ymlでは、いくつかのことを行います変数env変数SECRET_KEYを.ymlで2段階前に設定されたSECRET_KEYに設定します。
  • は画像をプッシュします

私は画像に環境変数を設定したので、今すぐアクセスできると思っています。しかし、私は何も得られません。ここで何が問題なの?

+0

ファイル名を指定して実行していましたコマンド 'env'を実行すると、すべての環境変数が表示されます。これは、問題をデバッグするのに役立ちます。 –

+0

はい、ありがとうございます。私はちょうどそれを試みた。少なくとも変数を示していますが空ですSECRET_KEY = –

+0

ドッキング・コンテナ内から実行しましたか?私は '.yml'の中で' post_ci'のように意味しました。実際には相違があるかどうかをすべての段階で確認してください。また、構文が間違っている場合に備えて、 'secure'という変数があるかどうかを調べます。 –

答えて

1

ありがとうございます@アレックスホール私と一緒にこれを解決する!

この設定でDockerで環境変数を渡すには、開始するための簡単なフラグを指定する必要があります。だから私のshippable.ymlに私が変更されました:

- docker build -t myusername/myimagename:latest . 

- docker build --build-arg SECRET_KEY=$SECRET_KEY -t myusername/myimagename:latest . 

に続いて、私のDockerfileに私が追加:

ARG SECRET_KEY 

RUN echo $SECRET_KEY > env_file 

ローとキーを見よenv_file

関連する問題