使用bitbucket-pipelines.yml将文件复制到构建的Docker映像中?

gmxoilav  于 2023-08-03  发布在  Docker
关注(0)|答案(1)|浏览(103)

我有一个bitbucket-pipelines.yml,它看起来像这样:

definitions:
  steps:
  - step: &docker_build
    name: "Docker Build"
    services:
      - docker
    caches:
      - pip
    script:
      - cd .
      - export IMAGE_NAME_EXTENSION="latest"
      - VERSION=$(<version.txt)
      - docker build -t $IMAGE_NAME .
      - docker save --output tmp-image.docker $IMAGE_NAME
    artifacts:
      - tmp-image.docker

pipelines:
  branches:
   master:
   - step: *docker_build

字符串
我的Dockerfile看起来像这样:

FROM python:3.8-slim

RUN apt-get -y update && apt-get install -y --no-install-recommends \
     libgl1-mesa-glx \
     libglib2.0-0 \
     wget \
     git \
     python3 \
     ca-certificates \
     gcc \
     libc6-dev \
&& rm -rf /var/lib/apt/lists/*

COPY requirements.txt .
RUN pip install --upgrade pip
RUN pip install -r requirements.txt
COPY src/some_code/ .
COPY config/ .
CMD ["python3","./abc.py"]


在我的代码中,我使用了Paho MQTT客户端。我的问题是,目前MQTT客户端的证书目前是在“config”文件夹中的我的repo的根级别上与代码一起签入的。Paho MQTT客户端自动从那里读取它们。我想把这些证书从我的回购中移走。我在AWS Secrets管理器中复制了我的证书,当我的bitbucket-pipelines.yml运行时,我能够获取它们。但是,现在我想将这些证书复制到我已经构建的Docker镜像中的“config”文件夹中。
我在这里尝试了几件事:
1.我试着在bitbucket-pipelines.yml中构建Docker镜像后运行它,然后尝试使用Python shutil复制文件-问题:一旦bitbucket-pipelines.yml中的步骤完成,Docker镜像就会崩溃
1.尝试使用Python运行它。问题:我在bitbucket-pipelines中没有容器名称。
有人能告诉我正确的文档吗?我试着寻找,但我找不到适合我的用例的帖子。

cidc1ykv

cidc1ykv1#

我可以这样实现:
1.在AWS Secrets Manager中存储机密。
1.将这一行添加到Docker(确保您的repo在根级别没有config文件夹-或者考虑它并相应地更改代码)

COPY config/ .

字符串
1.在管道中使用AWS CLI获取它们并构建Docker:

- SECRET_ROOT_CA=$(aws secretsmanager get-secret-value --secret-id root-CA --region us-west-1)
- echo "$SECRET_ROOT_CA" | jq -r '.SecretString' > config/root-CA.pem
- SECRET_KEYFILE=$(aws secretsmanager get-secret-value --secret-id keyfile --region us-west-1)
- echo "$SECRET_KEYFILE" | jq -r '.SecretString' > config/results.pem.key
- SECRET_CERTFILE=$(aws secretsmanager get-secret-value --secret-id certfile --region us-west-1)
- echo "$SECRET_CERTFILE" | jq -r '.SecretString'> config/bt2-results.pem.crt

# Building Docker
- cd .
- export IMAGE_NAME_EXTENSION="latest"
- VERSION=$(<version.txt)
- docker build -t $IMAGE_NAME .
- docker save --output tmp-image.docker $IMAGE_NAME

artifacts:
  - config/**
  - tmp-image.docker


这样做会获取MQTT所需的证书和所有秘密,并将其放置在paho_mqtt客户端需要的级别上。

相关问题