有Dockerfile.infra
和docker-compose-infra.yml
两个文件,首先通过以下命令构建docker-compose-infra.yml
:
docker-compose --file docker-compose-infra.yml build
这不会导致错误,并按预期完成。
尝试将其部署到AWS时出现问题。
docker-compose --file docker-compose-infra.yml run cdk
产生以下错误:
bash: cdk: command not found
这似乎是在docker-compose-infra.yml
尝试运行cdk deploy
bash命令时触发的。
该命令应该运行,因为在Dockerfile.infra
内部版本中,cdk通过npm install -g aws-cdk-lib
安装。
文档文件.infra文件:
FROM node:16-slim
ENV DEBIAN_FRONTEND=noninteractive
RUN npm install -g aws-cdk-lib \
&& apt-get update -y \
&& apt-get upgrade -y \
&& apt-get install -y --no-install-recommends \
# install Python
python3-pip \
# install Poetry via curl
curl \
&& curl -k https://install.python-poetry.org | python3 - \
&& apt-get remove curl -y \
&& apt-get autoremove -y \
&& rm -rf /var/lib/apt/lists/*
COPY pyproject.toml poetry.lock /
ENV PATH=/root/.local/bin:$PATH
RUN poetry config virtualenvs.create false \
&& poetry install --no-dev
WORKDIR /app/
COPY app.py cdk.json cdk.context.json /app/
COPY stacks/ /app/stacks/
docker-compose-infra.yml:
version: "3"
services:
cdk:
command: bash -c "cdk deploy --require-approval never --all --parameters my-app-${ENVIRONMENT}-service:MyServiceImageTag=${IMAGE_TAG}"
build:
context: ./
dockerfile: Dockerfile.infra
environment:
- AWS_PROFILE=${AWS_PROFILE}
- ENVIRONMENT=${ENVIRONMENT}
- DEPLOY_ACCOUNT=${DEPLOY_ACCOUNT}
volumes:
- ~/.aws/credentials:/root/.aws/credentials
1条答案
按热度按时间erhoui1w1#
您需要安装
aws-cdk
,而不是aws-cdk-lib
这可能有点混乱,因为
aws-cdk-lib
也是在编写Python CDK应用程序 * 和 * 有效的npm包时所需的Python依赖项的名称。