docker compose 实战学习笔记二 nginx + mysql

315 阅读3分钟

1 尝试加上mysql

version: "3"
services:
  nginx:
    image: nginx
    ports:
      - 80:80
    volumes:
      -  /home/www:/home/www  # 挂载宿主机上的www目录到容器里的home目录下方便发布web项目
      - ./nginx.conf:/etc/nginx/nginx.conf
      - ./conf.d/:/etc/nginx/conf.d/
      - ./logs:/var/log/nginx # 把容器内的Nginx日志目录挂载到宿主机
      - /etc/localtime:/etc/localtime:ro #配置容器时间同步
    restart: always
    container_name: ng
  mysql:
    image: swr.cn-south-1.myhuaweicloud.com/docker-study/mysql:8.0.22
    ports:
      - "3306:3306"
    volumes:
      - /data/mysql/data:/var/lib/mysql // 数据目录
      - /data/mysql/conf:/etc/mysql/conf.d // 配置文件
      - /data/mysql/logs:/data/mysql/logs // 日志
    restart: always
    container_name: mysql
    environment:
      - TZ=Asia/Shanghai
      - MYSQL_ROOT_PASSWORD=123456 // 初始化密码
    networks:
      app_net:
        ipv4_address: 10.10.10.1 //ip
networks: # 定义网络
  app_net:
    driver: bridge
    driver_opts:
      com.docker.network.enable_ipv6: "true"
    ipam:
      config:
        - subnet: 10.10.0.0/16

坑一拉取镜像时极慢。

查看daemon.json

{
       "registry-mirrors": ["https://6c3kptqz.mirror.aliyuncs.com"]
}

登录华为去 容器镜像服务 镜像资源 镜像中心 镜像加速 器。

{
    "registry-mirrors": [ "https://08e4196a38000f410f9cc01eac8df7a0.mirror.swr.myhuaweicloud.com" ]
}

systemctl restart docker

还是很慢。 降低mysql 版本。

error pulling image configuration: download failed after attempts=6: dial tcp 104.18.124.25:443: i/o timeout

各种问题。

error pulling image configuration: download failed after attempts=6: dial tcp 104.18.123.25:443: i/o timeout

没办法 ,将一台服务器中的镜像打tag ,放入到自己的私有镜像再下载、

docker tag mysql/mysql-server:8.0.22 swr.cn-south-1.myhuaweicloud.com/docker-study/mysql:8.0.22 docker push swr.cn-south-1.myhuaweicloud.com/docker-study/mysql:8.0.22

docker pull swr.cn-south-1.myhuaweicloud.com/docker-study/mysql:8.0.22

version: "3"
services:
  nginx:
    image: nginx
    ports:
      - 80:80
    volumes:
      -  /home/www:/home/www  # 挂载宿主机上的www目录到容器里的home目录下方便发布web项目
      - ./nginx.conf:/etc/nginx/nginx.conf
      - ./conf.d/:/etc/nginx/conf.d/
      - ./logs:/var/log/nginx # 把容器内的Nginx日志目录挂载到宿主机
      - /etc/localtime:/etc/localtime:ro #配置容器时间同步
    restart: always
    container_name: ng
    networks:
      - webnet
  mysql:
    image: swr.cn-south-1.myhuaweicloud.com/docker-study/mysql:8.0.22 
    ports:
      - "3306:3306"
    volumes:
      - /data/mysql/data:/var/lib/mysql // 数据目录
      - /data/mysql/conf:/etc/mysql/conf.d // 配置文件
      - /data/mysql/logs:/data/mysql/logs // 日志
    restart: always
    container_name: mysql
    environment:
      - TZ=Asia/Shanghai
      - MYSQL_ROOT_PASSWORD=123456 // 初始化密码
    networks:
      - webnet
networks:
  webnet:

成功。

坑2 ,mysql 无法登录。

将配置后面的注释去掉。

​ - MYSQL_ROOT_PASSWORD=123456

version: "3"
services:
  nginx:
    image: nginx
    ports:
      - 80:80
    volumes:
      -  /home/www:/home/www  # 挂载宿主机上的www目录到容器里的home目录下方便发布web项目
      - ./nginx.conf:/etc/nginx/nginx.conf
      - ./conf.d/:/etc/nginx/conf.d/
      - ./logs:/var/log/nginx # 把容器内的Nginx日志目录挂载到宿主机
      - /etc/localtime:/etc/localtime:ro #配置容器时间同步
    restart: always
    container_name: ng
    networks:
      - webnet
  mysql:
    image: swr.cn-south-1.myhuaweicloud.com/docker-study/mysql:8.0.22 
    ports:
      - "3306:3306"
    volumes:
      - /data/mysql/data:/var/lib/mysql // 数据目录
      - /data/mysql/conf:/etc/mysql/conf.d // 配置文件
      - /data/mysql/logs:/data/mysql/logs // 日志
    restart: always
    container_name: mysql
    environment:
      - TZ=Asia/Shanghai
      - MYSQL_ROOT_PASSWORD=123456
    networks:
      - webnet
networks:
  webnet:

创个用户,用工具连

create user 'root'@'%' identified by 'docker@Demo123';

报错caching_sha2_password

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'docker@Demo123';

后续初始化时,仅此即可。

create USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'docker@Demo123';

发现网上抄的volumes 配置文件和日志文件暂时用不上,先干掉。

version: "3"
services:
  nginx:
    image: nginx
    ports:
      - 80:80
    volumes:
      -  /home/www:/home/www  # 挂载宿主机上的www目录到容器里的home目录下方便发布web项目
      - ./nginx.conf:/etc/nginx/nginx.conf
      - ./conf.d/:/etc/nginx/conf.d/
      - ./logs:/var/log/nginx # 把容器内的Nginx日志目录挂载到宿主机
      - /etc/localtime:/etc/localtime:ro #配置容器时间同步
    restart: always
    container_name: ng
    networks:
      - webnet
  mysql:
    image: swr.cn-south-1.myhuaweicloud.com/docker-study/mysql:8.0.22 
    ports:
      - "3306:3306"
    volumes:
      - /data/mysql/data:/var/lib/mysql 
     
    restart: always
    container_name: mysql
    environment:
      - TZ=Asia/Shanghai
      - MYSQL_ROOT_PASSWORD=123456
    networks:
      - webnet
networks:
  webnet:

最后,docker ps 瞅一眼。

image.png