宿主机已经运行mysql在3306端口,这个时候 映射容器中的 mysql '3306:3306' 就会和外部冲突,

这个时候 映射 3308 到容器mysql的3306

CONTAINER ID        IMAGE                        COMMAND                             CREATED                  STATUS                   PORTS                                                             NAMES
416c5604188e        mysql:5.7                "docker-entrypoint.s…"   9 minutes ago       Up 8 minutes        33060/tcp, 0.0.0.0:3308->3306/tcp   axshare_go_db_mysql_1

需要注意的是,3308端口是暴露给宿主机访问用的,其他容器依然走3306端口访问mysql

附上docker-compose.yml 文件:

version: '3.3'
services:
  db_mysql:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_DATABASE: 'axshare'
      # So you don't have to use root, but you can if you like
      MYSQL_USER: 'ervincheung'
      # You can use whatever password you like
      MYSQL_PASSWORD: '1qaz2wsx'
      # Password for root access
      MYSQL_ROOT_PASSWORD: '123456'
    ports:
      # <Port exposed> : < MySQL Port running inside container>
      - '3308:3306'
    expose:
      # Opens port 3306 on the container
      - '3306'
      # Where our data will be persisted
    volumes:
      - /docker/data/mysql:/var/lib/mysql

  docker_axshare_go:
    restart: always
    image: ervincheung/axshare_go
    depends_on:
      - db_mysql
    ports:
      - 10524:10524

其他容器应用数据库配置文件信息:

# 数据库配置信息
axshare_db:  
  host: db_mysql
  port: 3306
  database: axshare
  user: ervincheung
  password: 123456
  encoding: utf8mb4

而宿主机访问则通过3306

mysql -u ervincheung -h 127.0.0.1 -P 3308 -p123456
0条评论 顺序楼层
请先登录再回复