首页 > 解决方案 > 在 Docker 容器中运行 docker compose

问题描述

我有一个正在构建的 docker 文件,它将使用 Localstack 来启动一个模拟 AWS 环境,此时我使用我的 docker compose 文件在本地执行此操作,所以我想我可以在何时复制我的 docker-compose.yml构建我的 docker 文件,然后从 dockerfile 运行 docker-compose up,我将能够从 dockerfile 创建的容器运行我的应用程序

这是码头工人撰写文件

version: '3.1'

services:
  localstack:
    image: localstack/localstack:latest
    environment:
      - AWS_DEFAULT_REGION=us-east-1
      - EDGE_PORT=4566
      - SERVICES=lambda,s3,cloudformation,sts,apigateway,iam,route53,dynamodb
    ports:
      - '4566-4597:4566-4597'
    volumes:
      - "${TEMPDIR:-/tmp/localstack}:/temp/localstack"
      - "/var/run/docker.sock:/var/run/docker.sock"

这是我的 Dockerfile

FROM node:16-alpine

RUN apk update

RUN npm install -g serverless; \
    npm install -g serverless-localstack;

WORKDIR /app
COPY serverless.yml ./
COPY localstack_endpoints.json ./
COPY docker-compose.yml ./
COPY --from=library/docker:latest /usr/local/bin/docker /usr/bin/docker
COPY --from=docker/compose:latest /usr/local/bin/docker-compose /usr/bin/docker-compose

EXPOSE 3000
RUN docker-compose up
CMD ["sls","deploy" ]

但我收到的错误是

#17 0.710 Couldn't connect to Docker daemon at http+docker://localhost - is it running?
#17 0.710 
#17 0.710 If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable.

我是 Docker 新手,当我在线研究错误时,我看到人们说它需要使用 Sudo 运行,尽管我认为在这种情况下,这与我的卷链接到运行容器的主机有关,但真的不确定.

标签: linuxdockerdocker-composeoperating-systemdockerfile

解决方案


在 Docker 容器内尝试访问套接字,但它不能。所以当你想运行你的容器时使用

  -v /var/run/docker.sock:/var/run/docker.sock 

它应该可以解决问题。


推荐阅读