相关文章推荐
成熟的春卷  ·  URL重写 · ...·  9 月前    · 
深情的围巾  ·  js文本框input ...·  1 年前    · 
善良的勺子  ·  oracle分组汇总求和-掘金·  1 年前    · 
Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams

Present are two files, Dockerfile.infra and docker-compose-infra.yml . Firstly, docker-compose-infra.yml is built via the following command:

docker-compose --file docker-compose-infra.yml build

This results in no errors and finishes as expected.

The problem arises when trying to deploy this to AWS. The following command:

docker-compose --file docker-compose-infra.yml run cdk

Produces this error:

bash: cdk: command not found

This appears to be triggered when the docker-compose-infra.yml attempts to run the cdk deploy bash command.

The command should run because within the Dockerfile.infra build, cdk is installed via npm install -g aws-cdk-lib.

Dockerfile.infra file:

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:
        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
        

Thanks for contributing an answer to Stack Overflow!

  • Please be sure to answer the question. Provide details and share your research!

But avoid

  • Asking for help, clarification, or responding to other answers.
  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.