我需要让 3 项服务仅在一个 docker 容器中运行。我在一个 docker-compose 中完成了这个“系统”,但由于一些限制,我只需要将它放入一个 dockerfile 中。我要运行的应用程序是 PHP(使用 Symfony)+ MongoDb。现在,我正在执行这个命令:sudo docker run -p 9091:80 -p 27017:27017 myapp当我浏览到 localhost:9091 时,我得到的最大值是 502 错误。谢谢Dockerfile:FROM php:7.3-fpm-stretchCOPY --from=composer /usr/bin/composer /usr/bin/composerRUN apt updateRUN apt install -y \ nginx \ mongodbCOPY nginx.conf /etc/nginx/nginx.confRUN pecl install mongodbRUN docker-php-ext-enable mongodbRUN service nginx startRUN service mongodb startEXPOSE 9091EXPOSE 27017COPY entrypoint.sh /WORKDIR /usr/wwwENTRYPOINT ["/entrypoint.sh"]COPY . /usr/www入口点.sh#!/bin/bashset -e -uservice nginx startservice mongodb starttail -f /dev/nullnginx.confevents { worker_connections 1024;}http { server { listen 80; server_name localhost; root /usr/www/public; location / { try_files $uri /index.php$is_args$args; } location ~ ^/index\.php(/|$) { fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; fastcgi_split_path_info ^(.+\.php)(/.*)$; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; fastcgi_param DOCUMENT_ROOT $realpath_root; } error_log /dev/stderr debug; access_log /dev/stdout; }}
2 回答
繁星点点滴滴
TA贡献1803条经验 获得超3个赞
是的,这是可能的,但这不是 docker 上下文中推荐的方法。
将每个容器限制为一个进程是一个很好的经验法则。
解耦应用程序
每个容器应该只有一个关注点。将应用程序解耦到多个容器中,可以更轻松地水平扩展和重用容器。例如,一个 Web 应用程序堆栈可能由三个独立的容器组成,每个容器都有自己独特的图像,以分离的方式管理 Web 应用程序、数据库和内存缓存。
所以最好使用docker-compose并启动三个容器并使用 docker 网络进行通信。
这将或多或少
或使用 docker-compose
至于评论中提到的当前问题,您没有启动 PHP,最好检查容器的日志。
- 2 回答
- 0 关注
- 203 浏览
添加回答
举报
0/150
提交
取消