宿主机已经运行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