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,测试是否启动成功。