版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/byg184244735/article/details/80572189
spring-boot 项目打包到 docker 镜像中运行:
pom文件
<plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>0.4.13</version> <configuration> <imageName>springio/${project.artifactId}</imageName> <dockerDirectory>src/main/docker</dockerDirectory> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin>
Dockerfile 基于 jdk8 的 spring-boot 项目运行环境
FROM frolvlad/alpine-oraclejdk8:slim VOLUME /tmp ADD com.xxx-0.0.1-SNAPSHOT.jar app.jar RUN sh -c 'touch /app.jar' ENV JAVA_OPTS="" ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]
打包命令:
mvn clean package -Dmaven.test.skip=true docker:build
或者单独构建,把 jar 包和 dockerfile 放在同一个目录下,运行docker build -t {springboot/xxx.jar:1.0.0} .
,注意后面的点不能少。
ubuntu docker 安装 mysql
docker pull mysql
- 启动 mysql 镜像:
docker run -p 3306:3306 --name mysql -v /root/mysql/conf:/etc/mysql/conf.d -v /root/mysql/logs:/logs -v /root/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=abc123456 -d mysql
- mysql 远程登陆:
mysql -h {ip} -p 3306 -u root -p {password}
- 授权远程访问并修改密码:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'abc123456';
或者GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'abc123456' WITH GRANT OPTION;
ubuntu docker 安装 nginx:
docker pull nginx
- 启动 nginx:
docker run -d -v /root/Documents/nginx-assets:/usr/share/nginx/assets -v /etc/docker/nginx/conf.d:/etc/nginx/conf.d -p 80:80 --name webserver nginx
(-d 守护模式,-v 挂载数据卷,会同步本地文件夹到 docker 容器中,第二个 -v 是同步 nginx 配置文件, –name 为本次容器启动命名, nginx 为镜像名称,镜像启动后为 webserver)
- docker 中运行 web 项目有两种方式。
- 安装 ubuntu 镜像,在 ubuntu 上安装 java 镜像
- 直接安装 java 镜像
启动 web 项目命令:docker run -d -v /root/Documents/data/xxx/:/data/xxx/ -p 8080:8080 registry.cn-hangzhou.aliyuncs.com/xxx/myblog:v1
如果没有必要,尽量不用安装系统镜像,减少复杂度。
- docker 常用命令:
- docker 启动:Docker quickstart Terminal 直接启动(会启动 Oracle VM VirtualBox 然后启动 docker 系统)
- 查看所有镜像:
docker images
- 查看运行中的容器:
docker ps [-a]
- 停止某个容器:
docker stop {container_id}
- 删除所有已停止的容器:
docker rm -f $(docker ps -a | grep Exit | awk '{ print $1 }')
- 删除某个镜像:
docker rmi {image-id}
- 查看某个容器启动日志:
docker logs {container_id}
- 进入运行中的容器:
docker exec -it {container_id} bash
- 构建镜像:
docker build -t {springboot/xxx.jar:1.0.0} .
- 查看容器信息:
docker inspect {container_id}
- 从容器中拷贝文件到宿主机:
docker cp {container_id}:{container_path} {host_path}
- 停止运行 docker 的虚拟机:
docker-machine stop default
加强理解:docker 本身就是一个精简版的 linux 系统,所以能支持直接安装各种镜像,不需要再去安装系统环境。另外 docker 提供了镜像仓库,很方便。
使用阿里云镜像地址加速:https://cr.console.aliyun.com/?spm=5176.1971733.0.2.9XaQr6#/accelerator
修改 docker 镜像存储位置:https://blog.csdn.net/u011248395/article/details/70994088
docker 命令参考:https://docker.rails365.net/chapters/3.html