我在我的开发环境中使用docker compose,项目运行。我想只要我在云控制台中为项目设置了防火墙规则,它就会自动打开端口。[但我需要使用-p标志运行docker]
vm运行项目中的Dockerfile,并使用我的映像打开一个容器,但没有打开端口。我必须在stop中使用ssh并删除容器,然后在映像上运行一个新的容器,并设置-p 80:8080标志,以便能够在http中看到该站点。
我正在为我的vm使用一个私有映像,当容器启动时,该映像会让网站运行。
这是我的Dockerfile:
FROM golang:1.19.2-alpine3.16
RUN addgroup app && adduser -S -G app app
USER app
WORKDIR /app
RUN mkdir data
COPY go.mod ./
COPY go.sum ./
RUN go mod download
COPY . .
CMD go build -o apps cmd/web/*.go && ./apps -cache=true -
production=true
EXPOSE 80:8080
这是合成文件[但它现在不是图像的一部分],在上一个文件夹中
version: "3.8"
services:
frontend:
build: ./app_links
ports:
- 80:8080
请注意,这是来自谷歌文档:[而且实际上是错误的]
容器端口与主机虚拟机端口具有一对一Map。例如,容器端口80Map到主机虚拟机端口80。计算引擎不支持端口发布(-p)标志,您不必指定它,Map也可以工作。要发布容器的端口,配置防火墙规则以允许访问主机VM示例的端口。根据防火墙规则,可以自动访问容器的相应端口。
Google文档
这是我从谷歌上得到的管理证书后,设置了一个前端和后端服务与健康检查:
"error": {
"code": 401,
"message": "Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.",
"errors": [
{
"message": "Login Required.",
"domain": "global",
"reason": "required",
"location": "Authorization",
"locationType": "header"
}
],
"status": "UNAUTHENTICATED",
"details": [
{
"@type": "type.googleapis.com/google.rpc.ErrorInfo",
"reason": "CREDENTIALS_MISSING",
"domain": "googleapis.com",
"metadatas": {
"method": "compute.v1.SslCertificatesService.Get",
"service": "compute.googleapis.com"
}
1条答案
按热度按时间68bkxrlz1#
我需要将指向负载平衡器IP地址的记录添加到Google Domains dns设置中[Other Registrars may be different]