perl – 为什么这个docker-compose命令在docker run命令成功时失败?

perl – 为什么这个docker-compose命令在docker run命令成功时失败?,第1张

概述我有以下docker-compose.yml: db: image: postgressearch: image: elasticsearchweb: build: . working_dir: /code environment: CATALYST_CONFIG_LOCAL_SUFFIX: development volumes 我有以下docker-compose.yml:

db:    image: postgressearch:    image: elasticsearchweb:    build: .    working_dir: /code    environment:        CATALYST_CONfig_LOCAL_SUFFIX: development    volumes:        - .:/code    ports:        - "8000:8000"    links:        - db        - search    command: carton exec plackup -E development bicycleevents_web.psgi -p 8000

编辑:和以下Dockerfile:

FROM ubuntu:latestRUN apt-get updateRUN apt-get install -y --force-yes build-essential curl libssl-dev postgresql-clIEnt libpq-dev perl-docRUN apt-get cleanRUN curl -L https://cpanmin.us | perl - --sudo App::cpanminusRUN cpanm CartonRUN mkdir /codeworkdir /codeADD . /code/RUN rm -rf /code/local/RUN carton install

如果我运行docker-compose up carton exec …命令失败

$docker-compose up...Starting bicycleeventsweb_web_1web_1    | Error while loading /code/bicycleevents_web.psgi: Can't locate Moose.pm in @INC (you may need to install the Moose module) (@INC contains: /code/lib /code/local/lib/perl5 /etc/perl /usr/local/lib/perl/5.18.2 /usr/local/share/perl/5.18.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.18 /usr/share/perl/5.18 /usr/local/lib/site_perl .) at /code/lib/BicycleEvents/Web.pm line 2.web_1    | BEGIN Failed--compilation aborted at /code/lib/BicycleEvents/Web.pm line 2.web_1    | Compilation Failed in require at /code/bicycleevents_web.psgi line 6.web_1    | BEGIN Failed--compilation aborted at /code/bicycleevents_web.psgi line 6.bicycleeventsweb_web_1 exited with code 2...

但是,如果我在容器上手动运行相同的命令,它会成功

$docker run -i -t -e "CATALYST_CONfig_LOCAL_SUFFIX=development" bicycleeventsweb_web carton exec plackup -E development bicycleevents_web.psgi -p 8000...http::Server::Psgi: Accepting connections at http://0:8000/

有关这两个命令之间有什么不同的想法吗?

作为参考,carton就像Bundler for Perl.使用carton exec应该设置Perl环境,以便包含包含所有特定于应用程序的依赖项的相应库路径 – 与docker run命令一起使用.

解决方法 我们能看到正在构建的Dockerfile吗? (我在评论中缺乏声誉.编辑:谢谢!)

(编辑:)

我注意到的一个区别是你正在安装. to / code in docker-compose file,但是你不能手动运行命令.我并不熟悉Carton,但是当你在Dockerfile中执行carton安装时,如果它在/ code中创建了工件,你可能会因为docker-compose卷定义而丢失它们.

总结

以上是内存溢出为你收集整理的perl – 为什么这个docker-compose命令在docker run命令成功时失败?全部内容,希望文章能够帮你解决perl – 为什么这个docker-compose命令在docker run命令成功时失败?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1271281.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存