原创

[docker]在docker中使用php composer

前言

我之前搭建了一个twitter转发推文的工具,稳定正常运行了半年,这几天却报错:

OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to

最初以为是ca证书的问题,然后开始折腾重新续期,重新申请,结果发现并不是,以为是TwitterOauth在这个库版本太低了,然后升级了一波,结果。。报!错!了!

Fatal error: Uncaught Error: Class 'Composer\CaBundle\CaBundle' not found in 
/www/twitter/\twitteroauth\src\TwitterOAuth.php:572 Stack trace: 
#0 /www/twitter/\twitteroauth\src\TwitterOAuth.php(620): Abraham\TwitterOAuth\TwitterOAuth->curlOptions() 
#1 /www/twitter/\twitteroauth\src\TwitterOAuth.php(557): Abraham\TwitterOAuth\TwitterOAuth->request('https://api.twi...', 'GET', 'Authorization: ...', Array, false) 
#2 /www/twitter/\twitteroauth\src\TwitterOAuth.php(490): Abraham\TwitterOAuth\TwitterOAuth->oAuthRequest('https://api.twi...', 'GET', Array, false) 
#3 /www/twitter/\twitteroauth\src\TwitterOAuth.php(467): Abraham\TwitterOAuth\TwitterOAuth->makeRequests('https://api.twi...', 'GET', Array, false) 
#4 /www/twitter/\twitteroauth\src\TwitterOAuth.php(232): Abraham\TwitterOAuth\TwitterOAuth->http('GET', 'h in /www/twitter/\twitteroauth\src\TwitterOAuth.php on line 572

好吧,原来是因为我没有编译,但是我生产环境,又是docker容器中,是不太想去安装git,composer这些玩意儿的。 这时候我灵机一动,是不是composer也有docker的镜像呢? 马上去是hub.docker中搜索,果然有,而且是官方维护的。那接下来就简单了。

安装

# docker pull composer:2.0.8

我以路径/www/twitter/twitteroauth为例子,直接运行:

docker run --rm --interactive --tty \
  --volume /www/twitter/twitteroauth/:/app \
  composer:2.0.8 install

稍等一会,就可以看到有vendor目录生成了。成功。

因为在docker中用php composer,php版本依赖没有保障,所以不推荐生产环境这么玩。 如果想持久化缓存,则可以将缓存映射到宿主机,比如这样:

docker run --rm --interactive --tty \
  --volume /www/twitter/twitteroauth/:/app \
  --volume /www/twitter/phpcomposer/:/tmp \
  composer:2.0.8 install

参考: 1.I used the TwitterOAuth library and got this error

温馨提示:
本文最后更新于 2022年04月21日,已超过 76 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我
正文到此结束
本文目录