/ bin / sh:设置docker-compose入口点时没有此类文件或目录

我有一个运行数据库迁移的容器():

FROM golang:1.12-alpine3.10 AS downloader
ARG VERSION

RUN apk add --no-cache git gcc musl-dev

WORKDIR /go/src/github.com/golang-migrate/migrate

COPY . ./

ENV GO111MODULE=on
ENV DATABASES="postgres mysql redshift cassandra spanner cockroachdb clickhouse mongodb sqlserver firebird"
ENV SOURCES="file go_bindata github github_ee aws_s3 google_cloud_storage godoc_vfs gitlab"

RUN go build -a -o build/migrate.linux-386 -ldflags="-s -w -X main.Version=${VERSION}" -tags "$DATABASES $SOURCES" ./cmd/migrate

FROM alpine:3.10

RUN apk add --no-cache ca-certificates

COPY --from=downloader /go/src/github.com/golang-migrate/migrate/build/migrate.linux-386 /migrate

ENTRYPOINT ["/migrate"]
CMD ["--help"]

我想将其集成到docker-compose中,并使其依赖于Postgres数据库服务。但是,由于必须等到数据库完全初始化后才能将migrate命令包装在脚本中,因此需要替换迁移容器的入口点。我正在使用等待脚本来轮询数据库,这是一个纯shell(不是bash)脚本,因此应在高山容器中工作。

这是在docker-compose中定义服务的方式:

services:
    database:
        # ...
    migration:
        depends_on:
            - database
        image: migrate/migrate:v4.7.0
        volumes:
            - ./scripts/migrations:/migrations
            - ./scripts/wait-for:/wait-for
        entrypoint: ["/bin/sh"]
        command: ["./wait-for database:5432", "--", "./migrate", "-path", "/migrations", "-database", "postgres://test:test@database:5432/test?sslmode=disable",  "-verbose", "up"]

docker-compose up在此运行失败

migration_1           | /bin/sh: can't open './wait-for database:5432': No such file or directory

使用本身运行迁移容器

docker run -it --entrypoint /bin/sh -v $(pwd)/scripts/wait-for:/wait-for  migrate/migrate:v4.7.0

确实可以正常工作,脚本在那里并且可以与一起运行/bin/sh ./wait-for

那么,为什么它作为docker-compose的一部分失败了?

约翰·布林格

如果您仔细阅读错误消息,将会发现找不到的文件不是./waitfor,而是./wait-for database:5432这与您的输入文件一致,其中整个内容作为command列表的第一个元素给出

        command: ["./wait-for database:5432", "--", "./migrate", "-path", "/migrations", "-database", "postgres://test:test@database:5432/test?sslmode=disable",  "-verbose", "up"]

我不清楚您实际想要的是什么,因为提出的可行替代方案似乎并不完全相似,但可能是

        command: ["./wait-for", "database:5432", "--", "./migrate", "-path", "/migrations", "-database", "postgres://test:test@database:5432/test?sslmode=disable",  "-verbose", "up"]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Docker容器:/ bin / sh:cat:无此类文件或目录

将Docker挂载到容器中显示可执行文件,但出现以下错误:/ usr / bin / docker:没有此类文件或目录

docker-compose构建失败,没有此类文件或目录

Docker Compose:无法运行ssh:没有此类文件或目录

-bash:bin / kafka-topics.sh:没有通过ambari安装的此类文件或目录

Postgres,Go Docker编写wait-for-it.sh没有此类文件或目录

Docker容器打印“没有此类文件或目录”

在Tensorflow Docker映像上启动convolutional.py脚本时,“没有此类文件或目录”

运行Docker映像时没有此类文件或目录错误

为什么 docker 不能将 /bin/sh -c 识别为有效的入口点?

chroot:无法运行命令“ / bin / bash”:没有此类文件或目录

youtube-dl / usr / bin / env:“ python”:没有此类文件或目录

/bin/sh^M: bad interpreter: 没有由不同的 GIT env 配置相互覆盖引起的此类文件或目录错误?

/ bin / bash:/ bin / java:MacOS中的Yarn应用程序中没有此类文件或目录错误

为什么在docker-compose.yml中将入口点设置为'bin / true'

Docker:构建映像时出现“ lstat没有此类文件或目录”错误。文件在那里

lstate错误:使用Docker build命令从自定义映像构建Docker时,没有此类文件或目录

主管服务无权访问音频设备(“设置 open_pcm 时出错:没有此类文件或目录”)

Android Studio设置用于构建的节点目录(原因:错误= 2,没有此类文件或目录)

具有Docker文件支持的Visual Studio-没有此类文件或目录

Heroku PHP应用程序崩溃bash:vendor / bin / heroku-php-apache2:没有此类文件或目录

Nodejs Azure部署失败:ENOENT:没有此类文件或目录,stat'/home/site/wwwroot/node_modules/.bin/semver'

/ bin / sh:/root/start-docker.sh:docker中的exec命令时权限被拒绝

无法在docker中运行脚本文件,没有此类文件或目录

当docker用`/ bin / sh -c`运行SIGTERM时,它没有到达节点脚本。

尝试设置用户systemd服务:已加载:找不到(原因:没有此类文件或目录)

Jenkins代理无法运行程序“ docker”:error = 2,没有此类文件或目录

Dockerfile中的Docker构建显示“ ADD失败-没有此类文件或目录”

Docker远程上的Pycharm远程解释器:[Errno 2]没有此类文件或目录