linux - 在 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 运行,尽管我认为在这种情况下,这与我的卷链接到运行容器的主机有关,但真的不确定.
解决方案
在 Docker 容器内尝试访问套接字,但它不能。所以当你想运行你的容器时使用
-v /var/run/docker.sock:/var/run/docker.sock
它应该可以解决问题。
推荐阅读
- json - 如何将 Json 值传递给 C# 中的存储过程
- ios - 按消息文本的 Pubnub 搜索频道
- mongodb - readStartDocument 只能在 CurrentBSONType 为 DOCUMENT 时调用
- html - 如何垂直对齐一个div?
- python - 如何将函数结果保存为 pandas 数据框?
- java - 尽管 xpath 准确,但无法单击元素
- python - QPainter.drawText 输出模糊
- sass - SCSS - 在文件范围内使用变量
- regex - 我们可以编写一个正则表达式来接受所有重复的 '.' 那是字符串中的小数点?
- python - Pyspark 无法读取网络上共享文件夹中的 csv 文件