一.安装linux环境
1.首先,官网下一个ubuntu16,这里有desktop版本和server版本,区别就是带不带桌面环境,我们只用命令行操作,选server就行了,性能上也会快一点.
2.安装,使用虚拟机默认安装,傻瓜操作.
3.执行下apt-get update,有报错的话参考https://segmentfault.com/a/1190000010632943,注释下
/etc/apt/sources.list
里面的本地源.
4.使用xshell连接, the 有可能报The remote system refused the connection. 原因是没有安装ssh, ps -e | grep ssh看一下有没有sshd启动,没有的话apt-get install OpenSSH-server就可以.连接了.
二.安装docker
1.执行,目的是安装下证书,下载文件需要的命令工具,软件包等,具体可以查询
apt-get install -y apt-transport-https ca-certificates curl software-properties-common
2.添加秘钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
3.添加一下docker的库,实际上就是给上面的sources.list添加一个源
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
4.然后再更新一下,apt-get update
5.下面就可以安装了
apt-get install -y docker-ce
apt-cache madison docker-ce 列出可用版本
apt-get install docker-ce=<VERSION> 安装特定版本
6.验证是否启动成功
systemctl status docker 查看启动状态
systemctl start docker 启动命令
7.hello world,命令里的hello-world是镜像名称,会先在本地查找,没有的话会去仓库查找,找到了pull下来再运行
docker run hello-world
三.构建Spring boot项目镜像
1.新建一个spring项目,最简单的就可以了,配置一下docker打包的插件,要用maven
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.2.0</version>
<configuration>
<imageName>${docker.image.prefix}/${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,插件会通过这个去构建镜像
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD docker-first-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" ]
- FROM ,表示使用 Jdk8 环境 为基础镜像,如果镜像不是本地的会从 DockerHub 进行下载
- VOLUME ,VOLUME 指向了一个
/tmp
的目录,由于 Spring Boot 使用内置的Tomcat容器,Tomcat 默认使用/tmp
作为工作目录。这个命令的效果是:在宿主机的/var/lib/docker
目录下创建一个临时文件并把它链接到容器中的/tmp
目录 - ADD ,拷贝文件并且重命名
- ENTRYPOINT ,为了缩短 Tomcat 的启动时间,添加
java.security.egd
的系统属性指向/dev/urandom
作为 ENTRYPOINT
2.把项目上传到我们新建的ubuntu环境中,这里要用到ftp,参考https://www.cnblogs.com/zongfa/p/8213488.html
3.安装一下jdk和maven,网上都有教程
add-apt-repository ppa:webupd8team/java
apt-get update
apt-get install oracle-java8-installer
apt-get install maven
4.在项目路径下执行 mvn package 打包项目
然后找到jar包 执行 nohup java -jar ***.jar & 运行项目,nohup 和 &使项目运行在后台并且日志打印在nohup中
5.然后执行 mvn package docker:build,会构建一个docker的镜像
6.docker images 查看镜像,会发现配置的 ${docker.image.prefix}/${project.artifactId} 就是镜像的名字
7.启动这个镜像 docker run -p 8080:9527 -t springboot/spring-boot-docker 意思是把本机的8080端口映射到docker容器的9527端口,外部就可以进行访问了.
8.docker ps可以查看本机在跑的容器
9.使用 docker logs CONTAINER_ID 可以查看输出的日志