Docker 大佬进,关于容器访问的相关问题

2023-12-26 16:35:12 +08:00
 tlerbao

描述

有一 MySql 容器和 PHP 容器

宿主机 Navicat 可以通过 127.0.0.1 链接

PHP 程序的 database.php 必须配置成 HOSTNAME=mysql (容器名),PHP 程序才能访问数据库

进入 PHP 容器,运行 php artisan 操作操作数据库是可以的 因为 php 容器好像可以通过 mysql 这个容器名访问到数据库

但是,宿主机也装有 PHP ,宿主机在项目下 php artisan 操作数据库就链接不到了,猜测因为宿主机的 php 找不到 mysql 这个 hostname 。

问题

我怎么改配置或者怎么做可以让各方都可以成功访问到 mysql 呢? 每次都进容器 php artisan\php think 的很麻烦。

我得配置

php:
    build:
      context: ./services/php
      args:
        PHP_VERSION: php:${PHP_VERSION}-fpm-alpine
        CONTAINER_PACKAGE_URL: ${CONTAINER_PACKAGE_URL}
        PHP_EXTENSIONS: ${PHP_EXTENSIONS}
        TZ: "$TZ"
    container_name: php
    ports:
      - "8200:8200"
    expose:
      - 9501
    extra_hosts:
      - "www.site1.com:172.17.0.1"
    volumes:
      - ${SOURCE_DIR}:/www/:rw
      - ${PHP_PHP_CONF_FILE}:/usr/local/etc/php/php.ini:ro
      - ${PHP_FPM_CONF_FILE}:/usr/local/etc/php-fpm.d/www.conf:rw
      - ${PHP_LOG_DIR}:/var/log/php
      - ${DATA_DIR}/composer:/tmp/composer
      - ~/.ssh:/root/.ssh/
    restart: always
    cap_add:
      - SYS_PTRACE
    networks:
      - default
      
      mysql:
    image: mysql:${MYSQL5_VERSION}
    container_name: mysql
    ports:
      - "${MYSQL5_HOST_PORT}:3306"
    volumes:
      - ${MYSQL5_CONF_FILE}:/etc/mysql/conf.d/mysql.cnf:ro
      - ${DATA_DIR}/mysql5:/var/lib/mysql/:rw
    restart: always
    networks:
      - default
    environment:
      MYSQL_ROOT_PASSWORD: "${MYSQL5_ROOT_PASSWORD}"
      TZ: "$TZ"
1591 次点击
所在节点    Docker
22 条回复
tlerbao
2024-01-05 16:29:36 +08:00
@julyclyde #20 被无情鄙视了吗?
julyclyde
2024-01-05 16:30:40 +08:00
@tlerbao focus on 当前任务
别把时间浪费在修理工具上

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1003561

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX