我有一个简单的静态网站,只有几行 JavaScript。该网站已使用此 Docker Compose 进行 Docker 化
version: "3.8"
services:
web:
image: docker.io/bitnami/apache:latest
restart: always
ports:
- 80:8080
- 443:8443
volumes:
- .:/app
我想在 Heroku 上部署它,但我发现不支持 docker-compose.yml
。所以我翻译了 Dockerfile 中的所有内容:
FROM docker.io/bitnami/apache:latest
COPY . /app
EXPOSE 8080
EXPOSE 8443
现在,运行 docker run -p 80:8080 -p 443:8443 <image-name>
的结果与运行 docker-compose 的结果相同,因此一切正常。
我想在 Heroku 上部署这个容器,我做了一个 heroku.yml
build:
docker:
web: Dockerfile
config:
REQUIREMENTS_FILENAME: heroku.yml
release:
image: web
我不知道这个配置是否足以让它在 Heroku 上正确运行。我的疑问之一是端口转发。实际上,在 Heroku 中构建成功,但 Deploy 失败(实际上它似乎陷入了循环)。
我做错了什么?
最好的问候
编辑:
我得到的错误是:
apache 16:40:47.10 INFO ==> ** Starting Apache **
[Sun Jan 03 16:40:47.215603 2021] [ssl:warn] [pid 38] AH01909: www.example.com:8443:0 server certificate does NOT include an ID which matches the server name
[Sun Jan 03 16:40:47.246370 2021] [ssl:warn] [pid 38] AH01909: www.example.com:8443:0 server certificate does NOT include an ID which matches the server name
[Sun Jan 03 16:40:47.250502 2021] [mpm_prefork:notice] [pid 38] AH00163: Apache/2.4.46 (Unix) OpenSSL/1.1.1d configured -- resuming normal operations
[Sun Jan 03 16:40:47.257621 2021] [core:notice] [pid 38] AH00094: Command line: '/opt/bitnami/apache/bin/httpd -f /opt/bitnami/apache/conf/httpd.conf -D FOREGROUND'
而且感觉像是卡在了 Bootloop 什么的。我在本地也收到了这个“服务器证书警告”,但似乎一切正常,所以我想这不是真正的问题。
答案 0 :(得分:0)
您需要将 Dockerfile 更改为如下所示:
FROM docker.io/bitnami/apache:latest
COPY . /app
# Heroku container ports are dynamic. So change your Listen port from 8080 to ${PORT}
RUN sed -i "s/8080/\${PORT}/g" /opt/bitnami/apache/conf/httpd.conf /opt/bitnami/apache/conf/vhosts/00_status-vhost.conf
Heroku 本身会为你处理 https。