美文网首页
使用Docker部署java springboot项目

使用Docker部署java springboot项目

作者: yunqing_71 | 来源:发表于2019-04-26 13:03 被阅读0次

搞了3天,吐血整理了docker部署中我用到的命令,记录一下。
docker拉取上传镜像太慢可以使用daoCloud的加速器。
右键docker任务栏图标---->设置-----> Daemon------->Registry mirrors中添加
http://f1361db2.m.daocloud.io

# 列出所有容器列表
docker ps -a
# 停止id为a1s1的容器
docker stop a1s1
# 删除容器
docker rm a1s1
# 列出所有镜像
docker images
# 删除mysql最后一个版本的镜像
docker rmi mysql:latest
# 启动docker
systemctl start docker

这几天遇到的问题:
/usr/local/config.xml
java.io.FileNotFoundException: /usr/local/config.xml (No such file or directory)
最难搞的一个问题是,我项目中要求读取文件系统中的一个xml docker部署项目到linux上
报一个文件不存在的问题,原因是因为,docker 部署到linux上之后,
不会去linux的文件系统去读这个xml,而是在docker 项目容器中读取这个xml,所以需要
把这个文件放到容器中。。。。

#docker版本查看
docker --version

#从docker hub提取hello-world的镜像并运行一个容器
docker run hello-world

#列出docker本地所有docker镜像
docker image ls --all

#列出所有docker容器container
docker container ls --all
#这样也可以
docker ps

#列出一些相关的帮助页面(全是英文,反正我看不懂)
docker --help
docker container --help
docker container ls --help
docker run --help

#停止容器根据名称(名称可能是自动生成的)或者根据container ID
docker container stop webserver
#可以省略写成
docker stop webserver

#开启容器根据名字或者container ID
docker start wenserver

#删除了webserver laughing_kowalevski relaxed_sammet这三个容器
docker container rm webserver laughing_kowalevski relaxed_sammet
#可以省略写成
docker rm webserver

#删除镜像根据镜像ID
docker image rm ea6fe4f7d2ec

#springboot项目构建image镜像

1.在根目录下创建Dockerfile
内容如下:
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE
COPY ${JAR_FILE}.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

2.在pom.xml中添加如下插件
<properties>
        <docker.image.prefix>yunqing71</docker.image.prefix>
</properties>
<build>
        <!--自定义生成jar包名称-->
        <finalName>myDemo</finalName>
        <plugins>
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>dockerfile-maven-plugin</artifactId>
                <version>1.4.9</version>
                <configuration>
                    <!--下面的配置指定了一个必须的配置,存储库,最终将是yunqing71/项目artifactId-->
                    <repository>${docker.image.prefix}/${project.artifactId}</repository>
                    <buildArgs>
                        <JAR_FILE>target/${project.build.finalName}</JAR_FILE>
                    </buildArgs>
                </configuration>
            </plugin>
            <!--为了确保在创建docker映像之前解压缩jar,我们为依赖项插件添加了以下一些配置-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>unpack</id>
                        <phase>package</phase>
                        <goals>
                            <goal>unpack</goal>
                        </goals>
                        <configuration>
                            <artifactItems>
                                <artifactItem>
                                    <groupId>${project.groupId}</groupId>
                                    <artifactId>${project.artifactId}</artifactId>
                                    <version>${project.version}</version>
                                </artifactItem>
                            </artifactItems>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
</build>


#配置完成之后,你可以通过以下命令来构建你项目的image镜像
mvnw install dockerfile:build

#你可以把你的镜像推送到docker hub
mvnw dockerfile:push

#您不必注册docker或发布任何东西来运行docker镜像。 您仍然拥有本地标记的图像,您可以像这样运行它:
##############   运行状态退出到能输入命令行ctrl+c    ###############
docker run -p 8080:8080 -t yunqing71/demo

#使用Spring配置文件运行刚刚创建的Docker镜像就像将环境变量传递给Docker run命令一样简单
$ docker run -e "SPRING_PROFILES_ACTIVE=prod" -p 8080:8080 -t yunqing71/demo
#或者可以这样
$ docker run -e "SPRING_PROFILES_ACTIVE=dev" -p 8080:8080 -t yunqing71/demo

#在docker容器中调试应用程序
#介绍:
要调试应用程序,可以使用JPDA传输。因此,我们将把容器看作远程服务器。要启用此功能,
请在容器运行期间在java OPTS变量中传递java代理设置,并将代理的端口映射到localhost。
使用Mac的Docker有一定的限制,因为我们不能通过IP访问容器而不使用黑魔法。
$ docker run -e "JAVA_OPTS=-agentlib:jdwp=transport=dt_socket,address=5005,server=y,suspend=n" -p 8080:8080 -p 5005:5005 -t yunqing71/demo
############以上一条没尝试过,按照spring官网抄的。#############

#安装docker在linux上,网上随便找教程。安装完成之后,登录自己的docker
docker login

#拉取自己的镜像,由于push的时候没设置标签,所以这里也就默认下载latest版本了
docker pull yunqing71/demo

#给镜像号为ea6缩写的镜像yunqing71/demo重命名tag为tag4.25,原来是latest
docker tag ea6 yunqing71/demo:tag4.25

#删除之前的tag为latest的镜像,因为image ID相同所以这么删除
docker image rm yunqing71/demo:latest

#上传镜像到docker hub,或者更新镜像到docker hub替换之前的版本
docker push yunqing71/demo:latest

#进入docker容器的目录
docker exec -it [CONTAINER ID] /bin/sh
#退出
exit

#从容器到本地
docker cp <containerId>:/usr/local/config.xml /usr/local

#从本地到容器
docker cp /usr/local/config.xml <containerId>:/usr/local

相关文章

网友评论

      本文标题:使用Docker部署java springboot项目

      本文链接:https://www.haomeiwen.com/subject/nlufnqtx.html