插件窝 干货文章 docker应用怎么配置域名访问

docker应用怎么配置域名访问

Docker Nginx LETSENCRYPT your 64    来源:    2025-04-03

Docker应用配置域名访问指南

要让Docker应用通过域名访问,通常需要以下几个步骤:

1. 基本配置方法

方法一:使用Nginx反向代理

  1. 安装Nginx

    docker run --name nginx-proxy -d -p 80:80 -p 443:443 -v /var/run/docker.sock:/tmp/docker.sock:ro nginxproxy/nginx-proxy
    
  2. 启动你的应用容器,并添加环境变量:

    docker run -d --name your-app -e VIRTUAL_HOST=yourdomain.com your-app-image
    

方法二:直接绑定端口

  1. 运行容器时绑定到主机的80或443端口:

    docker run -d -p 80:80 --name your-app your-app-image
    
  2. 然后在DNS服务商处将域名解析到服务器IP

2. 使用Docker Compose配置

version: '3'

services:
  app:
    image: your-app-image
    environment:
      - VIRTUAL_HOST=yourdomain.com
      - LETSENCRYPT_HOST=yourdomain.com
      - LETSENCRYPT_EMAIL=your@email.com
    networks:
      - proxy-tier

  nginx-proxy:
    image: jwilder/nginx-proxy
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro
      - ./certs:/etc/nginx/certs
    networks:
      - proxy-tier

  letsencrypt:
    image: jrcs/letsencrypt-nginx-proxy-companion
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./certs:/etc/nginx/certs
    depends_on:
      - nginx-proxy
    networks:
      - proxy-tier

networks:
  proxy-tier:
    driver: bridge

3. HTTPS配置(使用Let's Encrypt)

  1. 使用上述Docker Compose配置
  2. 确保域名已正确解析到服务器IP
  3. 确保服务器防火墙开放80和443端口

4. 高级配置(Traefik)

version: '3'

services:
  traefik:
    image: traefik:v2.5
    command:
      - --api.insecure=true
      - --providers.docker
      - --entrypoints.web.address=:80
      - --entrypoints.websecure.address=:443
      - --certificatesresolvers.myresolver.acme.tlschallenge=true
      - --certificatesresolvers.myresolver.acme.email=your@email.com
      - --certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json
    ports:
      - "80:80"
      - "443:443"
      - "8080:8080"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./letsencrypt:/letsencrypt

  your-app:
    image: your-app-image
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.your-app.rule=Host(`yourdomain.com`)"
      - "traefik.http.routers.your-app.entrypoints=websecure"
      - "traefik.http.routers.your-app.tls.certresolver=myresolver"

常见问题解决

  1. 域名无法访问

    • 检查DNS解析是否生效
    • 检查服务器防火墙设置
    • 检查容器是否正常运行
  2. HTTPS证书问题

    • 确保域名解析正确
    • 检查证书申请日志
    • 确保服务器时间正确
  3. Nginx 502错误

    • 检查后端应用是否正常运行
    • 检查网络连接

希望以上信息能帮助你配置Docker应用的域名访问。根据你的具体需求选择合适的方案。