我试图找出最近4个小时的问题,但没有运气。
我有两个容器。 PHP和nginx。 docker/php/dockerFile
中的第一名:
FROM php:7.2.2-fpm
...
# Install Composer
...
# install node and npm
...
WORKDIR /var/www/
COPY post_run_web.sh /usr/local/bin/
RUN chmod 755 /usr/local/bin/post_run_web.sh
和docker/nginx/dockerFile
中的第二个:
FROM nginx:1.10
ADD ./vhost.conf /etc/nginx/conf.d/default.conf
WORKDIR /var/www
和docker/nginx/vhost.conf
...
location ~ \.php$ {
try_files $uri /index.php =404;
fastcgi_pass app:9000;
fastcgi_index index.php;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
#fixes timeouts
fastcgi_read_timeout 600;
include fastcgi_params;
}
...
还有我的docker-compose.yml
文件
version: '3'
networks:
backend:
driver: bridge
frontend:
driver: bridge
services:
web:
build:
context: ./docker/nginx
dockerfile: dockerFile
container_name: "TEST_web"
volumes:
- ./:/var/www
ports:
- "80:80"
links:
- app
depends_on:
- app
networks:
- backend
app:
build:
context: ./docker/php
dockerfile: dockerFile
container_name: "TEST_php"
volumes:
- ./:/var/www
networks:
- backend
tty: true
entrypoint: ["/usr/local/bin/post_run_web.sh", "dev"]
...
我从docker-compose up
开始我的容器。问题是我的TEST_php容器由于post_run_web.sh
中的entrypoint
选项而自动停止。因此,我在tail -f /dev/null
中添加了docker/php/post_run_web.sh
,以保持容器运行:
#!/bin/bash
cd /var/www
composer install
npm install
npm run $1
tail -f /dev/null
现在,我看到所有容器都在运行,但尝试通过浏览器访问时出现Bad Gateway nginx
错误。如果我从yml
文件中删除入口点,并尝试在容器启动后手动执行post_run_web.sh
,则一切都可以正常工作。
如何修复它并保留我的入口点选项?
答案 0 :(得分:1)
过去几天,我一直在为此苦苦挣扎。我发现的一些常见问题是:
listen = 0.0.0.0:9000
。您可能需要ADD/COPY
配置。我怀疑问题可能出在未启动php-fpm,因为您定义了自己的入口点,而覆盖了启动服务的默认php-fpm7.2映像的入口点。尝试在post_run_web.sh
中启动服务。
希望这会有所帮助。