编写dockerfile
1 2 3 4 5
| FROM java:8 ADD mall-0.0.1-SNAPSHOT.jar /mall.jar EXPOSE 8080 ENTRYPOINT ["java", "-jar","/mall.jar","--spring.profiles.active=prod"] MAINTAINER chenlong
|
- FROM 基于已有的镜像构建
- ADD 文件到镜像内目录
- EXPOSE 声明端口
- ENTRYPOINT 运行后默认执行代码
- MAINTAINER 作者
构建docker镜像
1 2 3 4 5 6 7 8 9 10 11 12
| linux: docker build -t niulianliunai/mall . docker push niulianliunai/mall
mac: docker buildx create --use --name m1_builder docker buildx inspect --bootstrap docker buildx build --platform linux/amd64,linux/arm64 --push -t niulianliunai/mall .
|
- -t xx相当于tag命令,把build的镜像命名为xx
- arm架构需下载m1版docker使用buildx命令
- –platform 构建对应平台的image
- –push 推送到远程仓库
服务器拉取镜像
docker pull niulianliunai/mall
查看镜像详细信息
docker inspect xxx
运行容器
1 2 3 4
| docker run -p 8080:8080 --name mall -v /root/mydata/app/mall/logs:/logs/mall -d niulianliunai/mall
|
- -p 映射端口 (宿主机:容器)
- -v 映射目录
- -d 后台运行容器
进入容器
docker exec -it mall bash
- exec 在容器内执行命令
- -it 在容器开启一个交互模式的终端
- bash表示进入容器的bash脚本执行模式
docker-compose方式
下载
1 2
| curl -L https://get.daocloud.io/docker/compose/releases/download/1.26.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
|
给予可执行权限
chmod +x /usr/local/bin/docker-compose
编写docker-compose.yml文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| version: '3' services: mall: image: niulianliunai/mall container_name: mall ports: - 8080:8080 volumes: - /root/mydata/app/mall/logs:/logs environment: - 'TZ="Asia/Shanghai"' external_links: - mysql:mysql - redis:redis - rabbitmq:rabbitmq networks: default: external: name: mall
|
- links代表的是在本文件下互通:意思就是在这个yml文件一块启动的容器下互通
- external_links是只要是同一个docker启动的都可以互通(可能需要配置自定义网络)
- networks设置容器网络
- mysql:mysql 配置以后在容器内可以用mysql:3306访问mysql
创建自定义网络
docker network ls #查看网络
docker network create -d bridge mall
执行
docker-compose -f docker-compose.yml up -d
编写sh脚本文件方便后续执行
1 2 3 4 5 6 7 8 9 10
| #!/usr/bin/env bash app_name='mall' docker_id='niulianliunai' version=1.0.0 docker stop ${app_name} docker rm ${app_name} docker image rm ${docker_id}/${app_name} docker build -t ${docker_id}/${app_name} . docker push ${docker_id}/${app_name} docker-compose -f docker-compose.yml up -d
|