前言:
最近在家里搞智能家居折腾homeassistant之类, 上班就看看k8s之类学习下新技能,烟台的技术比较落后,基本还都靠宝塔之类跑PHP,然后跑的代码CCRMEB也比较邪典, 商业化的php脚本部署基本都会遇到很大问题(后台安装之类代码基本不支持单独部署,还有些奇奇怪怪的静态资源引用的后台代码的静态资源)。
尝试把crmeb之类打了包, 碰到上面说的问题, 还要映射出一个静态目录来交给nginx,因为以后项目可能比较杂乱,配了半天头越来越大,因为用的docker swarm 用一个nginx来作为网关路由, 加上域名也比较杂acme容器也搞半天,各种项目的静态文件映射也很杂乱,要是有轻量化的ingress之类的东西就好了。
traefik:
部署其他服务:
version: "3.7"
networks:
traefik-net:
external: true
name: traefik-net
services:
mysql:
container_name: db
image: mysql
volumes:
- /root/docker/db_data:/var/lib/mysql
restart: always
ports:
- ":3306"
networks:
- traefik-net
environment:
MYSQL_ROOT_PASSWORD:xxxx
MYSQL_DATABASE: xxxx
MYSQL_USER: xxxx
MYSQL_PASSWORD: xxxx
deplay:
labels:
- "traefik.http.services.dummy-svc.loadbalancer.server.port=9999"
wordpress:
container_name: wordpress
depends_on:
- mysql
image: wordpress
volumes:
- /root/docker/wordpress_data:/var/www/html
restart: always
networks:
- traefik-net
environment:
WORDPRESS_DB_HOST: xxx
WORDPRESS_DB_USER:xxx
WORDPRESS_DB_PASSWORD:xxx
WORDPRESS_DB_NAME:xxx
deploy:
labels:
- "traefik.http.routers.wordpress-https.rule=Host(`cyanprobe.com`)||Host(`www.cyanprobe.com`)"
- "traefik.http.routers.wordpress-https.entrypoints=websecure"
- "traefik.http.routers.wordpress-https.tls.certresolver=zerossl"
- "traefik.http.services.wordpress-https.loadbalancer.server.port=80"
bitwarden:
image: vaultwarden/server
container_name: bitwardenrs
restart: always
ports:
- :80
- :3012
volumes:
- /root/docker/bw-data:/data
networks:
- traefik-net
environment:
SIGNUPS_ALLOWED: "false"
WEB_VAULT_ENABLED: "true"
WEBSOCKET_ENABLED: "true"
deploy:
labels:
# - "traefik.enable=false"
- "traefik.http.routers.bitwarden-https.rule=Host(`bitwarden.cyanprobe.com`)"
- "traefik.http.routers.bitwarden-https.entrypoints=websecure"
- "traefik.http.routers.bitwarden-https.tls.certresolver=zerossl"
- "traefik.http.services.bitwarden-https.loadbalancer.server.port=80"
遇到问题 翻下官网:
2024-06-14T02:18:08Z ERR error=“service \”xxx-agent\” error: port is missing” container=xxxx providerName=swarm
traefik.http.services.<service_name>.loadbalancer.server.port
Registers a port. Useful when the container exposes multiples ports.
Mandatory for Docker Swarm (see the section “Port Detection with Docker Swarm”).
- "traefik.http.services.myservice.loadbalancer.server.port=8080"
看了下官网说是traefik无法扫描到swarm上的端口,需要定义
https://github.com/traefik/traefik/issues/5732
原来是因为traefic默认swarm provider上的服务都是自动注册的,那么只需要随便添加一个路由,或者干脆不启用traefik
traefik.http.services.dummy-svc.loadbalancer.server.port=9999
看到这个还在讨论有人说要加50行…..

