# 基础版

# 清除环境

如果做过场景1的实验, 请清除场景1中运行的网络和容器, 具体参考场景1-清除环境

# 网络

参考场景1中创建网络.

# 构建

  1. order-server:0.0.1-SNAPSHO

    参考场景1完成构建

  2. 构建shopping-cart-server镜像

    # 进入./demo/shopping-mall目录下
    docker build \
      -f ./shopping-cart-server/Dockerfile \
      -t shopping-cart-server:0.0.1-SNAPSHO \
      .
    

# 启动

  1. 启动mysql服务

    docker run --name shopping-mall-mariadb \
      -p 33060:3306 \
      -e MYSQL_ROOT_PASSWORD=x22x22 \
      -e MYSQL_USER=shopping-mall-mariadb \
      -e MYSQL_PASSWORD=shopping-mall-mariadb \
      -e MYSQL_DATABASE=shopping-mall-mariadb \
      --net shopping-mall \
      --network-alias shopping-mall-mariadb \
      -d \
      mariadb:10.5.4
    
  2. 启动redis服务

    docker run \
      --name shopping-mall-redis \
      --net shopping-mall \
      --network-alias shopping-mall-redis \
      -p 36379:6379 \
      -d \
      redis:6.0.5-buster
    
  3. 启动order-server:0.0.1-SNAPSHOT

    docker run -d \
      --name order-server \
      -p 38080:38080 \
      --net shopping-mall \
      --network-alias order-server \
      -e spring.r2dbc.url=r2dbc:mysql://shopping-mall-mariadb:3306/shopping-mall-mariadb \
      order-server:0.0.1-SNAPSHOT
    
  4. 启动shopping-cart-server:0.0.1-SNAPSHOT

    docker run -d \
      --name shopping-cart-server \
      -p 38081:38081 \
      --net shopping-mall \
      --network-alias shopping-cart-server \
      -e spring.redis.host=shopping-mall-redis \
      -e spring.redis.port=6379 \
      shopping-cart-server:0.0.1-SNAPSHOT
    
  5. 启动nginx

    docker run \
      --name shopping-mall-nginx \
      -d \
      --net shopping-mall \
      --network-alias shopping-mall-nginx \
      --mount type=bind,source="$(pwd)"/nginx/conf.d,target=/etc/nginx/conf.d \
      -p 20200:20200 \
      nginx:1.19.0
    

# 验证

  1. 获取容器NAT IP

    1. 如果使用docker desktop安装的docker, 可以直接使用127.0.0.1进行容器的访问

    2. 如果使用docker toolbox安装的docker, 请运行以下命令获得容器的IP

      docker-machine env
      # 回显关键内容
      # DOCKER_HOST=tcp://192.168.99.101:2376
      # 其中192.168.99.101为容器的访问IP
      
  2. 调用shopping-mall-nginx服务接口

    • 浏览器中直接打开http://127.0.0.1:20200/ethan/orderhttp://127.0.0.1:38080/order链接, 可以看到分别返回对应的服务响应报文.

      PS: 如果是docker toolbox方式安装的, 请将上面的127.0.0.1部分修改为获取容器NAT IP章节中获取到的IP, 后面需要访问其它容器也是如此, 就不再重复提示.

    • 调用结果:

      1. 通过shopping-mall-nginx调用order-server的接口
        通过nginx调用order-server服务接口
      2. 通过shopping-mall-nginx调用shopping-cart-server的接口
        通过nginx调用shopping-cart-server服务接口