遇到映射错误并且无法弄清楚错误是什么 YML 似乎是有效的,并且 .env 文件在与撰写相同的目录中设置了正确的变量。我尝试将 env_file 行压缩为一行,但这不起作用。
services.mixpost.environment must be a mapping
这是完整的 YML,它是直接从供应商网站复制的,以尽量减少错误。我已经通过 YML 验证器传递了它,并尝试清除空格,但没有成功。
version: '3.1'
services:
traefik:
image: "traefik"
restart: unless-stopped
command:
- "--api=true"
- "--api.insecure=true"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.web.address=:80"
- "--entrypoints.web.http.redirections.entryPoint.to=websecure"
- "--entrypoints.web.http.redirections.entrypoint.scheme=https"
- "--entrypoints.websecure.address=:443"
- "--certificatesresolvers.mytlschallenge.acme.tlschallenge=true"
- "--certificatesresolvers.mytlschallenge.acme.email=${SSL_EMAIL}"
- "--certificatesresolvers.mytlschallenge.acme.storage=/letsencrypt/acme.json"
ports:
- "80:80"
- "443:443"
volumes:
- traefik_data:/letsencrypt
- /var/run/docker.sock:/var/run/docker.sock:ro
mixpost:
image: inovector/mixpost:latest
environment:
env_file:
- .env
ports:
- "127.0.0.1:80:80"
labels:
- traefik.enable=true
- traefik.http.routers.mixpost.rule=Host(`${APP_DOMAIN}`)
- traefik.http.routers.mixpost.tls=true
- traefik.http.routers.mixpost.entrypoints=web,websecure
- traefik.http.routers.mixpost.tls.certresolver=mytlschallenge
- traefik.http.middlewares.mixpost.headers.SSLRedirect=true
- traefik.http.middlewares.mixpost.headers.STSSeconds=315360000
- traefik.http.middlewares.mixpost.headers.browserXSSFilter=true
- traefik.http.middlewares.mixpost.headers.contentTypeNosniff=true
- traefik.http.middlewares.mixpost.headers.forceSTSHeader=true
- traefik.http.middlewares.mixpost.headers.SSLHost=`${APP_DOMAIN}`
- traefik.http.middlewares.mixpost.headers.STSIncludeSubdomains=true
- traefik.http.middlewares.mixpost.headers.STSPreload=true
- traefik.http.routers.mixpost.middlewares=mixpost@docker
volumes:
- storage:/var/www/html/storage/app
- logs:/var/www/html/storage/logs
depends_on:
- mysql
- redis
restart: unless-stopped
mysql:
image: 'mysql/mysql-server:8.0'
environment:
MYSQL_DATABASE: ${DB_DATABASE}
MYSQL_USER: ${DB_USERNAME}
MYSQL_PASSWORD: ${DB_PASSWORD}
volumes:
- 'mysql:/var/lib/mysql'
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-p ${DB_PASSWORD}"]
retries: 3
timeout: 5s
restart: unless-stopped
redis:
image: 'redis:latest'
command: redis-server --appendonly yes --replica-read-only no
volumes:
- 'redis:/data'
healthcheck:
test: ["CMD", "redis-cli", "ping"]
retries: 3
timeout: 5s
restart: unless-stopped
volumes:
traefik_data:
driver: local
mysql:
driver: local
redis:
driver: local
storage:
driver: local
logs:
driver: local
错误是您指定了空(因此无映射错误)
environment
部分。
您只需将其删除并重试即可。
让我知道它是否有效。