您的位置:首页 > 娱乐 > 明星 > 网页设计制作历年真题含答案_图行天下免费素材网_长沙官网seo分析_中国营销网站

网页设计制作历年真题含答案_图行天下免费素材网_长沙官网seo分析_中国营销网站

2025/4/17 15:07:06 来源:https://blog.csdn.net/2301_79499223/article/details/146508806  浏览:    关键词:网页设计制作历年真题含答案_图行天下免费素材网_长沙官网seo分析_中国营销网站
网页设计制作历年真题含答案_图行天下免费素材网_长沙官网seo分析_中国营销网站

一、环境准备

1. 安装必要软件

  1. Docker Desktop for Windows

    • 下载地址:Docker Desktop: The #1 Containerization Tool for Developers | Docker

    • 安装时勾选"使用 WSL 2 引擎"(推荐)

  2. WSL 2(Windows Subsystem for Linux)

    • 以管理员身份打开 PowerShell 运行:

      wsl --install
       
  3. VS Code(可选但推荐)

    • 安装 Docker 和 WSL 扩展

2. 验证安装

docker --version
docker-compose --version
wsl -l -v
 

二、项目初始化

1. 创建项目目录结构

/my-go-app
├── /nginx
│   ├── Dockerfile
│   └── nginx.conf
├── Dockerfile
├── docker-compose.yml
├── go.mod
└── main.go
 

2. 初始化 Go 模块

go mod init myapp
 

三、编写 Go 应用

1. 创建简单 HTTP 服务 (main.go)

package mainimport ("fmt""net/http"
)func main() {http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {fmt.Fprintf(w, "Hello from Go app!")})fmt.Println("Server running on port 8080")http.ListenAndServe(":8080", nil)
}
 

四、配置 Docker

1. Go 应用的 Dockerfile

# 第一阶段:构建应用
FROM golang:1.21 AS builder# 设置工作目录
WORKDIR /app# 先复制依赖文件
COPY go.mod go.sum ./# 下载依赖
RUN go mod download# 复制源代码
COPY . .# 构建应用(禁用CGO,静态编译)
RUN CGO_ENABLED=0 GOOS=linux go build -o myapp .# 第二阶段:运行环境
FROM alpine:latest# 安装CA证书(HTTPS需要)
RUN apk --no-cache add ca-certificatesWORKDIR /root/# 从构建阶段复制可执行文件
COPY --from=builder /app/myapp .# 暴露端口
EXPOSE 8080# 运行应用
CMD ["./myapp"]
 

2. Nginx 配置

nginx/nginx.conf

worker_processes auto;events {worker_connections 1024;
}http {# 上游Go应用服务upstream goapp {server app:8080; # 对应docker-compose中的服务名}server {listen 80;server_name localhost;# 静态文件服务(可选)location /static/ {alias /var/www/static/;}# 反向代理配置location / {proxy_pass http://goapp;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;# WebSocket支持(如需)proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";}# 错误页面error_page 500 502 503 504 /50x.html;location = /50x.html {root /usr/share/nginx/html;}}
}
 
nginx/Dockerfile

FROM nginx:alpine# 删除默认配置
RUN rm /etc/nginx/conf.d/default.conf# 复制自定义配置
COPY nginx.conf /etc/nginx/nginx.conf# 复制静态文件(如有)
# COPY static /var/www/staticEXPOSE 80
 

五、Docker Compose 配置

docker-compose.yml

version: '3.8'services:# Go应用服务app:build: .  # 使用当前目录的Dockerfilecontainer_name: go-apprestart: unless-stoppedenvironment:- APP_ENV=production# 开发时可以挂载代码目录# volumes:#   - .:/app# ports:#   - "8080:8080"  # 开发时可以直接访问# Nginx服务nginx:build: ./nginxcontainer_name: nginx-proxyports:- "80:80"  # 映射主机80端口depends_on:- apprestart: unless-stopped
 

六、构建与运行

1. 构建镜像

docker-compose build
 

2. 启动服务

docker-compose up -d
 

3. 查看运行状态

docker-compose ps
 

4. 查看日志

# 查看全部日志
docker-compose logs# 实时查看Go应用日志
docker-compose logs -f app# 实时查看Nginx日志
docker-compose logs -f nginx
 

七、访问测试

  1. 通过Nginx访问

    • 浏览器打开:http://localhost

    • 应显示 "Hello from Go app!"

  2. 直接访问Go应用(开发时):

    • 修改docker-compose.yml取消app的ports注释

    • 浏览器打开:http://localhost:8080

八、开发环境优化

1. 热重载配置

  1. 安装Air热重载工具:

go install github.com/cosmtrek/air@latest
 
  1. 修改docker-compose.yml:

services:app:command: airvolumes:- .:/appenvironment:- APP_ENV=development
 

2. 文件监视问题解决

Windows文件系统性能问题解决方案:

  1. 将项目移动到WSL2文件系统:

# 在WSL中创建目录
wsl
mkdir -p /home/username/projects/my-go-app
exit# 在Windows中访问
\\wsl$\Ubuntu\home\username\projects\my-go-app
 
  1. 或配置Docker Desktop:

    • 设置 -> Resources -> File Sharing

    • 添加项目目录

九、生产环境建议

  1. HTTPS配置

    • 使用Let's Encrypt免费证书

    • 修改nginx.conf添加SSL配置

  2. 多阶段构建优化

    # 在Go的Dockerfile中添加
    RUN go install -tags 'postgres' -v ./...
     
  3. 健康检查

    healthcheck:test: ["CMD", "curl", "-f", "http://localhost:8080/health"]interval: 30stimeout: 10sretries: 3
     

十、常见问题解决

  1. 端口冲突

    # 查找占用80端口的进程
    netstat -ano | findstr :80# 结束进程(谨慎操作)
    taskkill /PID <PID> /F
     
  2. 容器无法启动

    # 查看详细错误信息
    docker inspect <container_id> | Select-String -Pattern "Error"
     
  3. 清理Docker资源

    # 停止并删除所有容器
    docker-compose down# 删除未使用的镜像
    docker image prune# 删除所有未使用的资源
    docker system prune -a
     

本教程提供了从零开始到生产部署的完整流程,涵盖了Windows环境下的特殊注意事项,帮助您高效地在Windows上使用Docker部署Go应用和Nginx反向代理。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com