PAN*_*ack 10 docker docker-compose
我正在尝试使用 Docker 和Docker Compose创建一个容器化应用程序。我有一个 PubNub 帐户,它允许我为不同的环境(开发、测试、生产)使用不同的 API 密钥。为了帮助我为此构建图像,我尝试使用带有env_file 的构建参数集。
它不起作用。
WARNING: The PUB_KEY variable is not set. Defaulting to a blank string.
WARNING: The SUB_KEY variable is not set. Defaulting to a blank string.
Run Code Online (Sandbox Code Playgroud)
问题:
ENV的容器变量scan和flask?最底部是IntelliJ IDE 屏幕截图,或者文本代码就在下面。
以下是docker-compose.yml内容:
version: '3.6'
services:
scan:
env_file:
- sample.env
build:
context: .
dockerfile: Dockerfile
args:
pub_key: $PUB_KEY
sub_key: $SUB_KEY
target: scan
image: bt-beacon/scan:v1
flask:
env_file:
- sample.env
build:
context: .
dockerfile: Dockerfile
args:
pub_key: $PUB_KEY
sub_key: $SUB_KEY
target: flask
image: bt-beacon/flask:v1
ports:
- "5000:5000"
Run Code Online (Sandbox Code Playgroud)
和Dockerfile:
# --- BASE NODE ---
FROM python:3.6-jessie as base
ARG pub_key
ARG sub_key
RUN test -n "$pub_key"
RUN test -n "$sub_key"
# --- SCAN NODE ---
FROM base as scan
ENV PUB_KEY=$pub_key
ENV SUB_KEY=$sub_key
COPY app/requirements.scan.txt /
RUN apt-get update
RUN apt-get -y install bluetooth bluez bluez-hcidump python-bluez python-numpy python3-dev libbluetooth-dev libcap2-bin
RUN pip install -r /requirements.scan.txt
RUN setcap 'cap_net_raw,cap_net_admin+eip' $(readlink -f $(which python))
COPY app/src /app
WORKDIR /app
CMD ["./scan.py", "$pub_key", "$sub_key"]
# -- FLASK APP ---
FROM base as flask
ENV SUB_KEY=$sub_key
COPY app/requirements.flask.txt /
COPY app/src /app
RUN pip install -r /requirements.flask.txt
WORKDIR /app
EXPOSE 5000
CMD ["flask", "run"]
Run Code Online (Sandbox Code Playgroud)
最后,sample.env:
# PubNub app keys here
PUB_KEY=xyz1
SUB_KEY=xyz2
Run Code Online (Sandbox Code Playgroud)
And*_*sky 11
env_file只能在服务容器内设置环境变量。变量 fromenv_file不能注入到docker-compose.yml自身中。
你有这样的选择(在那里有详细描述):
docker-compose up.env包含这些变量的文件(语法与您的相同sample.env)我个人会将镜像构建过程和容器启动过程分开(将镜像构建责任从 docker-compose 转移到外部脚本,然后构建过程可以轻松配置)。
| 归档时间: |
|
| 查看次数: |
10571 次 |
| 最近记录: |