【问题标题】:ERROR: The Compose file './docker-compose.yml' is invalid because: services.mysql.ports is invalid错误:撰写文件“./docker-compose.yml”无效,因为:services.mysql.ports 无效
【发布时间】:2022-01-09 06:54:43
【问题描述】:

错误:Compose 文件 './docker-compose.yml' 无效,因为:services.mysql.ports 无效:端口“3307”:3306 无效,应为 [[remote_ip:]remote_port [-remote_port]:]port[/protocol]

在 Laravel v8.7 上使用 docker 和 Laravel 帆 尝试在数字海洋水滴 Ubuntu 20.04 中创建外部端口 想要在一个 droplet 中使用多个项目,以便使用单独的容器来做到这一点,但面临这个问题。 docekr-compsoer.yml

version: '3'
services:
    laravel.test:
        build:
            context: ./vendor/laravel/sail/runtimes/8.1
            dockerfile: Dockerfile
            args:
                WWWGROUP: '${WWWGROUP}'
        image: sail-8.1/app
        extra_hosts:
            - 'host.docker.internal:host-gateway'
        ports:
            - '${APP_PORT:-80}:80'
        environment:
            WWWUSER: '${WWWUSER}'
            LARAVEL_SAIL: 1
            XDEBUG_MODE: '${SAIL_XDEBUG_MODE:-off}'
            XDEBUG_CONFIG: '${SAIL_XDEBUG_CONFIG:-client_host=host.docker.internal}'
        volumes:
            - '.:/var/www/html'
        networks:
            - sail
        depends_on:
            - mysql
    mysql:
        image: 'mysql/mysql-server:8.0'
        ports:
            - '${FORWARD_DB_PORT:-3306}:3306'
        environment:
            MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
            MYSQL_ROOT_HOST: "%"
            MYSQL_DATABASE: '${DB_DATABASE}'
            MYSQL_USER: '${DB_USERNAME}'
            MYSQL_PASSWORD: '${DB_PASSWORD}'
            MYSQL_ALLOW_EMPTY_PASSWORD: 1
        volumes:
            - 'sailmysql:/var/lib/mysql'
        networks:
            - sail
        healthcheck:
            test: ["CMD", "mysqladmin", "ping", "-p${DB_PASSWORD}"]
            retries: 3
            timeout: 5s
networks:
    sail:
        driver: bridge
volumes:
    sailmysql:
        driver: local

** .env **

APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:4KqkfLTvVorxQCcZMHxmxxUcmeg3JKNoMNfDbyVWSd8=
APP_DEBUG=true
APP_URL=http://localhost

APP_PORT="8080"
FORWARD_DB_PORT="3307"

//rest of the configs

【问题讨论】:

  • 尝试将FORWARD_DB_PORT="3307"更改为FORWARD_DB_PORT=3307

标签: mysql laravel docker


【解决方案1】:

在docker-compose中,映射端口的规则如下。

remote_ip:remote_port:port

但是你放错了变量。 修改语法如下:

ports:
    - ${APP_PORT}:80

ports:
    - ${FORWARD_DB_PORT}:3306

并且在dotenv文件中,对于Integer类型的变量,不需要双引号,也可以更正一下。

APP_PORT=8080
FORWARD_DB_PORT=3307

【讨论】:

  • 问题只是双引号,如果您没有在 dotenv 文件中定义端口,那么在这种情况下默认外部端口为 80 - '${APP_PORT:-80}:80'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-28
  • 1970-01-01
  • 2015-05-10
  • 2022-12-10
  • 2021-10-01
  • 1970-01-01
相关资源
最近更新 更多