Google Cloud 运行 即使在将端口更改为 8080 后仍无法收听
Google Cloud Run fails to listen even after changing port to 8080
我最近在部署到云 运行 时遇到了一些问题。当我尝试将以下 Docker 文件部署到云 运行 时,它以错误 Failed to start and then listen on the port defined by the PORT 环境变量。:
FROM phpmyadmin/phpmyadmin:latest
EXPOSE 8080
RUN sed -i 's/80/${PORT}/g' /etc/apache2/sites-available/000-default.conf /etc/apache2/ports.conf
ENTRYPOINT [ "/docker-entrypoint.sh" ]
CMD [ "apache2-foreground" ]
即使 phpmyadmin/phpmyadmin:latest 使用相同的 ENTRYPOINT 和 CMD 来查看是否可以解决问题,但 ENTRYPOINT 和 CMD 是单独添加的,尽管它不是必需的。使用 docker 运行 运行s 正确部署并在端口 8080 上侦听时的相同 Docker 图像。我在做什么错了吗?
这是我用来部署的命令:
gcloud run deploy phpmyadmin --memory=1Gi --platform=managed \
--allow-unauthenticated --add-cloudsql-instances project_id:us-central1:db-name \
--region=us-central1 --image gcr.io/project_id/phpmyadmin:1.3 \
--update-env-vars PMA_HOST=localhost,PMA_SOCKET="/cloudsql/project_id:us-central1:db-name",PMA_ABSOLUTE_URI=phpmyadmin.domain.com
这是我能在日志中找到的全部内容。 (已编辑一些数据):
https://gist.github.com/shanukk27/9dd4b3076c55307bd6e853a76e7a34e0
云 运行 运行时间环境似乎与 Docker 运行 命令略有不同。不能同时使用 ENTRYPOINT 和 CMD
ENTRYPOINT [ "/docker-entrypoint.sh" ]
CMD [ "apache2-foreground" ]
它适用于 Docker 运行(为什么?Docker 问题?Docker 功能?)而不是云 运行(缺少功能?错误?).
只使用其中一个,例如:
ENTRYPOINT /docker-entrypoint.sh && apache2-foreground
编辑
Shanu 分享的一个奇怪的评论是 2 命令适用于 Wordpress 部署,但在这里不起作用。
FROM wordpress:5.3.2-php7.3-apache
EXPOSE 8080
# Copy custom entrypoint from repo
COPY cloud-run-entrypoint.sh /usr/local/bin/
# Change apache listening port and set permission for docker entrypoint
RUN sed -i 's/80/${PORT}/g' /etc/apache2/sites-available/000-default.conf /etc/apache2/ports.conf && \
chmod +x /usr/local/bin/cloud-run-entrypoint.sh
# Wordpress conf
COPY wordpress/. /var/www/html/
# Custom entrypoint
ENTRYPOINT ["cloud-run-entrypoint.sh","docker-entrypoint.sh"]
# Start apache when docker container starts
CMD ["apache2-foreground"]
到这里问题解决了,但不清楚原因
Google 员工注意事项(Steren?Ahmet?):您能否分享有关此行为的更多详细信息?
我最近在部署到云 运行 时遇到了一些问题。当我尝试将以下 Docker 文件部署到云 运行 时,它以错误 Failed to start and then listen on the port defined by the PORT 环境变量。:
FROM phpmyadmin/phpmyadmin:latest
EXPOSE 8080
RUN sed -i 's/80/${PORT}/g' /etc/apache2/sites-available/000-default.conf /etc/apache2/ports.conf
ENTRYPOINT [ "/docker-entrypoint.sh" ]
CMD [ "apache2-foreground" ]
即使 phpmyadmin/phpmyadmin:latest 使用相同的 ENTRYPOINT 和 CMD 来查看是否可以解决问题,但 ENTRYPOINT 和 CMD 是单独添加的,尽管它不是必需的。使用 docker 运行 运行s 正确部署并在端口 8080 上侦听时的相同 Docker 图像。我在做什么错了吗?
这是我用来部署的命令:
gcloud run deploy phpmyadmin --memory=1Gi --platform=managed \
--allow-unauthenticated --add-cloudsql-instances project_id:us-central1:db-name \
--region=us-central1 --image gcr.io/project_id/phpmyadmin:1.3 \
--update-env-vars PMA_HOST=localhost,PMA_SOCKET="/cloudsql/project_id:us-central1:db-name",PMA_ABSOLUTE_URI=phpmyadmin.domain.com
这是我能在日志中找到的全部内容。 (已编辑一些数据):
https://gist.github.com/shanukk27/9dd4b3076c55307bd6e853a76e7a34e0
云 运行 运行时间环境似乎与 Docker 运行 命令略有不同。不能同时使用 ENTRYPOINT 和 CMD
ENTRYPOINT [ "/docker-entrypoint.sh" ]
CMD [ "apache2-foreground" ]
它适用于 Docker 运行(为什么?Docker 问题?Docker 功能?)而不是云 运行(缺少功能?错误?).
只使用其中一个,例如:
ENTRYPOINT /docker-entrypoint.sh && apache2-foreground
编辑
Shanu 分享的一个奇怪的评论是 2 命令适用于 Wordpress 部署,但在这里不起作用。
FROM wordpress:5.3.2-php7.3-apache
EXPOSE 8080
# Copy custom entrypoint from repo
COPY cloud-run-entrypoint.sh /usr/local/bin/
# Change apache listening port and set permission for docker entrypoint
RUN sed -i 's/80/${PORT}/g' /etc/apache2/sites-available/000-default.conf /etc/apache2/ports.conf && \
chmod +x /usr/local/bin/cloud-run-entrypoint.sh
# Wordpress conf
COPY wordpress/. /var/www/html/
# Custom entrypoint
ENTRYPOINT ["cloud-run-entrypoint.sh","docker-entrypoint.sh"]
# Start apache when docker container starts
CMD ["apache2-foreground"]
到这里问题解决了,但不清楚原因
Google 员工注意事项(Steren?Ahmet?):您能否分享有关此行为的更多详细信息?