version: '3' services: mysql: ##(服务1) restart: always image: hub.c.163.com/library/mysql:5.7 ports: - "127.0.0.1:3306:3306" # 宿主机ip:port:容器内port environment: MYSQL_ROOT_PASSWORD: "kang870838" volumes: # 数据持久化方法1:自定义宿主机存储位置 # 本地宿主机目录/文件:docker容器目录/文件 #- mysqldb:/var/lib/mysql # 全局卷标名称:docker容器 这种方式是不知道存储在本地的绝对路径,需要使用docker volume ls 和docker volume inspect 容器卷标 查看。 docker volume rm 容器卷标 删除卷 - ./docker/mysql/my.cnf:/etc/my.cnf #卷标:容器 这种方式是使用本地绝对路径的方式,可以查看到数据存放到本地的具体路径 - ./docker/mysqldb:/var/lib/mysql - ./docker/mysql/init:/docker-entrypoint-initdb.d/
# 初始化sql必须放在容器的/docker-entrypoint-initdb.d/目录下才可以执行,并且如果上边的mysqldb已经存在的话也不会执行,
# 必须先把宿主机上的./docker/mysqldb目录删除掉再执行
volumes:
# 数据持久化方法2:定义全局卷标(可选)
# 自定义卷标名称。卷标对应的存储目录是无法自定义的,它默认自动在docker安装目录下/var/lib/docker/volumes生成,是虚拟磁盘形式存在的
# 查看卷标具体位置:docker volume inspect vagrant_mysql
mysqldb: {}
docker-compose.yml详细配置
https://github.com/compose-spec/compose-spec/blob/master/spec.md#ports