一、上传jar到指定目录
1-创建文件夹
[root@iZuf6hxabqikytnrumsi4gZ /]# mkdir mydocker
[root@iZuf6hxabqikytnrumsi4gZ /]# ls
2-上传jar包
[root@iZuf6hxabqikytnrumsi4gZ mydocker]# ls
docker_boot-0.0.1-SNAPSHOT.jar
二、编写Dockerfile
1-vim 编写Dockerfile
[root@iZuf6hxabqikytnrumsi4gZ mydocker]# vim Dockerfile
2-查看Dockerfile
[root@iZuf6hxabqikytnrumsi4gZ mydocker]# cat Dockerfile
#基础镜像使用java
FROM java:8
# 作者
MAINTAINER syf
# VOLUME 指定临时文件目录为/tmp,在主机/var/lib/docker目录下创建了一个临时文件并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名
ADD docker_boot-0.0.1-SNAPSHOT.jar dockertest.jar
# 运行jar包
RUN bash -c 'touch /dockertest.jar'
ENTRYPOINT ["java","-jar","/dockertest.jar"]
#暴露8090端口作为微服务
EXPOSE 6001
三、构建镜像
在当前目录下构建镜像
docker build -t dockertest:1.0 .
构建结果:
1-查看到dockertest镜像
[root@iZuf6hxabqikytnrumsi4gZ mydocker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
dockertest 1.0 6630cddf3ac3 2 minutes ago 760MB
centosjava8 1.0 b66e5037b732 5 days ago 1.27GB
redis 6.2.6 7614ae9453d1 24 months ago 113MB
mysql 5.7 c20987f18b13 24 months ago 448MB
centos 7 eeb6ee3f44bd 2 years ago 204MB
四、运行容器
docker run -d --name=dockertest -p 6001:6001 镜像ID
实际运行步骤如下:
1-上传jar到如下目录
[root@syf mydocker]# ls
docker_boot-0.0.1-SNAPSHOT.jar Dockerfile
2-在本目录下,构建镜像
[root@syf mydocker]# docker build -t dockertest:1.0 .
[+] Building 17.7s (8/8) FINISHED docker:default
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 471B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/library/java:8 15.2s
=> [internal] load build context 0.4s
=> => transferring context: 58.23MB 0.4s
=> CACHED [1/3] FROM docker.io/library/java:8@sha256:c1ff613e8ba25833d2e1940da0940c3824f03f802c449f3d1815a66b7f8c0e9d 0.0s
=> [2/3] ADD docker_boot-0.0.1-SNAPSHOT.jar dockertest.jar 1.1s
=> [3/3] RUN bash -c 'touch /dockertest.jar' 0.3s
=> exporting to image 0.6s
=> => exporting layers 0.6s
=> => writing image sha256:ae9b75acc22422d1b2dd2b14070c6dd79f03e3caa145f70813532a888d8fd4c8 0.0s
=> => naming to docker.io/library/dockertest:1.0
3-在8089端口,运行镜像
[root@syf mydocker]# docker run -d --name=dockertest -p 6001:6001 ae9b75acc224
c06bd1088b383466beec95e1d0af76c9794d1fe1981a7ca4308cec281fec019a
4-查看容器 dockertest
[root@syf mydocker]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c06bd1088b38 ae9b75acc224 "java -jar /dockerte…" 4 seconds ago Up 3 seconds 0.0.0.0:6001->6001/tcp, :::8090->8090/tcp dockertest
a34aff536643 redis:6.2.6 "docker-entrypoint.s…" 2 weeks ago Up 23 minutes 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp redis6.2.6
2a384f369e0b mysql:5.7
最后访问你的项目地址,验证运行成功
四、查看日志
docker logs --tail 300 -f dockertest
比如:查看倒数25行报错
1-查看命令
[root@syf mydocker]# docker logs dockertest|tail -n 25
java.sql.SQLException: Access denied for user 'root'@'192.168.1' (using password: YES)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:965) ~[mysql-connector-java-5.1.47.jar!/:5.1.47]
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3978) ~[mysql-connector-java-5.1.47.jar!/:5.1.47]
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3914) ~[mysql-connector-java-5.1.47.jar!/:5.1.47]
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:871) ~[mysql-connector-java-5.1.47.jar!/:5.1.47]
at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1714) ~[mysql-connector-java-5.1.47.jar!/:5.1.47]
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1224) ~[mysql-connector-java-5.1.47.jar!/:5.1.47]
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2199) ~[mysql-connector-java-5.1.47.jar!/:5.1.47]
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2230) ~[mysql-connector-java-5.1.47.jar!/:5.1.47]
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2025) ~[mysql-connector-java-5.1.47.jar!/:5.1.47]
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:778) ~[mysql-connector-java-5.1.47.jar!/:5.1.47]
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47) ~[mysql-connector-java-5.1.47.jar!/:5.1.47]
at sun.reflect.GeneratedConstructorAccessor57.newInstance(Unknown Source) ~[na:na]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_111]
at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[na:1.8.0_111]
at com.mysql.jdbc.Util.handleNewInstance(Util.java:425) ~[mysql-connector-java-5.1.47.jar!/:5.1.47]
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:386) ~[mysql-connector-java-5.1.47.jar!/:5.1.47]
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:330) ~[mysql-connector-java-5.1.47.jar!/:5.1.47]
at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:156) ~[druid-1.1.16.jar!/:1.1.16]
at com.alibaba.druid.filter.stat.StatFilter.connection_connect(StatFilter.java:218) ~[druid-1.1.16.jar!/:1.1.16]
at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:150) ~[druid-1.1.16.jar!/:1.1.16]
at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1598) ~[druid-1.1.16.jar!/:1.1.16]
at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1662) ~[druid-1.1.16.jar!/:1.1.16]
at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2601) ~[druid-1.1.16.jar!/:1.1.16]
[root@syf mydocker]#
也可以测试项目:swagger 是否集成成功、
192.168.1.1:6001/swagger-ui.html