Mac下Docker搭建部署单机服务

安装

使用 Homebrew 安装

brew install --cask --appdir=/Applications docker

安装成功过后,运行Docker.app

直到出现下面这个图标

用docker --version查看版本

& docker --version
Docker version 20.10.2, build 2291f61

尝试运行一个 Nginx 服务器:

$ docker run -d -p 80:80 --name webserver nginx

服务运行后,可以访问 http://localhost,如果看到了 "Welcome to nginx!",就说明 Docker Desktop for Mac 安装成功了

 

 停止 Nginx 服务器并删除命令:

$ docker stop webserver
$ docker rm webserver

 设置加速镜像源

配置阿里云镜像源  => 地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

点击顶部状态栏中的鲸鱼图标,在弹出的操作菜单中点击Preferences - Docker Engine,修改docker镜像源为:

 查看是否设置成功:

$ docker info
    ......
 Registry Mirrors:
  https://tkcnyb3h.mirror.aliyuncs.com/
 Live Restore Enabled: false
 

 拉取JDK镜像

// 从Docker Hub查找镜像
$ docker search openjdk

// 拉取镜像:指定版本镜像
$ docker pull openjdk:8u282

创建网络

// 解决容期间通信问题,创建一个Bridge网络,命名为local-net
$ docker network create local-net

// 查看网络
$ docker network ls
NETWORK ID     NAME        DRIVER    SCOPE
b5d38bd8ffa8   bridge      bridge    local
ea5465b4a7b0   host        host      local
3ee615756863   local-net   bridge    local
a0a7026b53b4   none        null      local

拉取镜像并创建Mysql容器

// 拉取镜像
$ docker pull mysql

// 使用mysql镜像启动一个指定容器名称、网络、参数:密码、指定端口映射(主机(宿主)端口:容器端口)、以交互模式运行容器、后台运行模式
$ docker run --name mysql --network local-net -e MYSQL_ROOT_PASSWORD=qiyue... -d -i -p 3307:3306 mysql:latest

在宿主机上用客户端连接测试

拉取镜像并创建Nacos容器

// 拉取镜像
$ docker pull nacos/nacos-server:1.4.0

// 创建容器 指定启动方式--env MODE=standalone(单机模式)、端口映射
$ docker run --name nacos --env MODE=standalone -d -p 8848:8848 nacos/nacos-server

//查看容器信息
$ docker ps -a
CONTAINER ID   IMAGE                      COMMAND                  CREATED        STATUS       PORTS                               NAMES
828b242c0680   nacos/nacos-server:1.4.0   "bin/docker-startup.…"   23 hours ago   Up 6 hours   0.0.0.0:8848->8848/tcp              nacos
76fdef861ec8   mysql:latest               "docker-entrypoint.s…"   2 days ago     Up 6 hours   33060/tcp, 0.0.0.0:3307->3306/tcp   mysql

//进入nacos容器交互界面 可以修改配置文件
$ docker exec -it 828b242c0680 /bin/bash

// 在mysql中创建nacos数据库;并执行nacos容器下conf文件夹里的schema.sql文件初始化表
// 重启nacos容器
$ docker restart myrunoob

访问http://localhost:8848/nacos,测试是否启动成功。

 部署业务项目

测试子项目结构如下:

 子项目构建配置文件:

dependencies {
    compile 'org.springframework.boot:spring-boot-starter-web'
    compile 'mysql:mysql-connector-java:8.0.22'

    //nacos服务/配置中心
    compile 'com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery:2.2.3.RELEASE'
}

bootstrap.yml配置文件:

spring:
  application:
    name: docker
  cloud:
    nacos:
      discovery:
        server-addr: nacos:8848 #指定服务名:nacos
        service: ${spring.application.name}
        #namespace: 116a05b2-a7fe-4c71-baee-9af8aefd4fec #可指定命名空间
        group: TEST_GROUP
      config:
        server-addr: nacos:8848 #指定服务名:nacos
        #namespace: 116a05b2-a7fe-4c71-baee-9af8aefd4fec #可指定命名空间
        group: TEST_GROUP
        prefix: ${spring.application.name}

application.yml配置文件:

server:
  port: 8098
  servlet:
    context-path: /docker

spring:
  datasource:
    url: jdbc:mysql://mysql:3307/demo?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useSSL=true #指定服务名mysql,上海时区可避免+8小时问题
    username: root
    password: qiyue...
    driver-class-name: com.mysql.cj.jdbc.Driver

logging:
  level:
    #全局设置日志等级
    root: debug

Dockerfile文件:

# 指定基础镜像
FROM openjdk:8u282
# 创建文件夹并更改权限
RUN mkdir /home/y_cloud && chmod -R 777 home/y_cloud
# 拷贝项目jar包到指定目录
COPY build/libs/testdocker-1.0-SNAPSHOT.jar /home/y_cloud
# 暴露容器端口
EXPOSE 8098
# 执行命令
ENTRYPOINT ["java","-jar","/home/y_cloud/testdocker-1.0-SNAPSHOT.jar"]

编译打包项目

回到docker继续执行:

// cd到dockerfile文件所在的文件目录
$ cd /Users/yue/IdeaProjects/y_cloud/testdocker
// 使用当前目录的 Dockerfile 创建镜像,名称为testdocker,标签为latest
$ docker image build -t testdocker:latest .
// 创建容器 指定容器名称、网络、指定端口映射(主机(宿主)端口:容器端口)、以交互模式运行容器、后台运行模式
$ docker run --name testdocker --network local-net -d -i -p 8098:8098 testdocker:latest

服务注册成功.

最后访问http://localhost:8098/docker/swagger-ui.html,测试是否启动成功。

 

posted @ 2021-01-20 18:03  柒月丶  阅读(663)  评论(0编辑  收藏  举报