Google Cloud Run не слушает даже после изменения порта на 8080 - PullRequest
1 голос
/ 29 мая 2020

В последнее время у меня возникли проблемы с развертыванием в Cloud Run. Когда я пытаюсь развернуть приведенный ниже файл Dockerfile в Cloud Run, появляется ошибка Не удалось запустить, а затем прослушивать порт, определенный переменной среды 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" ]

ENTRYPOINT и CMD были добавлены отдельно, хотя phpmyadmin / phpmyadmin: latest использует те же ENTRYPOINT и CMD, чтобы увидеть, решит ли это проблему, хотя это и не требуется. Тот же образ Docker при развертывании с использованием docker run работает правильно и прослушивает порт 8080. Что-то я делаю неправильно?

Это команда, которую я использую для развертывания:

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

1 Ответ

4 голосов
/ 29 мая 2020

Среда выполнения Cloud Run немного отличается от команды Docker run. Вы не можете использовать ENTRYPOINT и CMD одновременно

ENTRYPOINT [ "/docker-entrypoint.sh" ]

CMD [ "apache2-foreground" ]

Он работает с Docker Run (почему? Docker проблема? Docker функция?), А не в Cloud Run (отсутствует функция ? ошибка?).

Используйте только один из них, например:

ENTRYPOINT /docker-entrypoint.sh && apache2-foreground

EDIT

Странное замечание, которое разделяет Шану, - это 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"]

Здесь проблема решена, но причина не ясна

Примечание для Googler (Steren? Ахмет?) : Не могли бы вы подробнее рассказать об этом поведении?

...