前提
-
本地安装docker、docker-compose
-
注册阿里云账号
步骤
- 在本地开发环境构建镜像
- 后端项目
在spring-microservice-exam
目录下运行:
1 | mvn clean package |
docker插件配置打包的同时构建镜像
构建成功:
- 前端项目
以spring-microservice-exam-ui
为例,在spring-microservice-exam-ui
目录下运行打包命令:
1 | npm run build |
运行成功后会生成dist
目录,里面是项目的静态资源,再运行构建镜像命令
1 | docker build -t registry.cn-hangzhou.aliyuncs.com/spring-microservice-exam/spring-microservice-exam-ui:2.0 . |
本地试运行命令:
1 | docker run -d -p 80:80 --name spring-microservice-exam-ui registry.cn-hangzhou.aliyuncs.com/spring-microservice-exam/spring-microservice-exam-ui:2.0 |
- 创建命名空间和镜像仓库
登录阿里云控制台,在容器镜像服务菜单下,创建spring-microservice-exam
命名空间和各服务的仓库
如:config-service
、auth-service
、spring-microservice-ui
- 在开发环境将镜像推送到仓库:
以config-service
为例
1 | docker push registry.cn-hangzhou.aliyuncs.com/spring-microservice-exam/config-service:2.0 |
- 登录腾讯云服务器,拉取镜像
登录阿里云Docker Registry:
1 | docker login --username=你的阿里云账号 registry.cn-hangzhou.aliyuncs.com |
拉取镜像:
1 | docker pull registry.cn-hangzhou.aliyuncs.com/spring-microservice-exam/config-service:2.0 |
- 运行镜像:
1 | docker run -d -p 8769:8769 --name config-service registry.cn-hangzhou.aliyuncs.com/spring-microservice-exam/config-service:2.0 |
docker常用命令
1. 查看所有容器:docker ps -a2. 删除镜像:docker rmi imageId3. 删除容器:docker rm containerId4. 直接运行一个停止的容器:docker start containerId5. 进入容器:docker exec -it 09d2a6ee4095 /bin/bash6. 退出容器:exit7. 将容器打包成镜像:docker commit containerId imageName,如:docker commit 1f9dfc05e3ad spring-microservice-exam-mysql
docker-compose
基本命令:
基本命令: 1. 启动镜像:docker-compose up 2. 后台启动:docker-compose up -d // 后台启动并运行容器 3. 指定配置文件:docker-compose -f docker-compose-base.yml up 4. 构建服务:docker-compose -f docker-compose-base.yml build 5. 列出所有容器:docker-compose ps 6. 删除容器:docker-compose rm container,如:docker-compose rm config-service 7. 停止正在运行的容器:docker-compose stop
使用示例
MySQL镜像构建、运行、初始化的docker-compose例子:
docker-compose-env.yml: # MySQL spring-microservice-exam-mysql: image: mysql:5.7 volumes: - data:/var/lib/mysql # 自动执行初始化脚本 - ./doc/deploy/mysql:/docker-entrypoint-initdb.d/ environment: MYSQL_ROOT_PASSWORD: 11 # root账户的密码 restart: always container_name: spring-microservice-exam-mysql ports: - 3306:3306 volumes: data: driver: local运行:docker-comopse -f docker-comopse-env.yml up