一、release-3.2.2打包docker镜像失败

  • 当前使用的thingsboard版本号为:release-3.2.2
  • 使用如下命令,进行docker镜像打包,会报错。

    提示:往下看,有解决方案!

  1. mvn clean install -DskipTests=true -Ddockerfile.skip=false

二、将整个thingsboard项目必须是Linux换行符

正常情况下,对thingsboard项目进行二次开发时,是在Windows系统下进行的。而此时,整个thingsboard项目的换行符都为Windows下的CRLF,而打包thinsgboard项目的docker镜像时,需要将整个项目的换行符转为Linux下的LF
image.png
根本原因:项目中含有的SHELL脚本,是要打包到镜像中的,而SHELL脚本的换行符必须为LF

三、使用master分支替换release-3.2.2分支上的Dockerfile文件

①: msa/tb/docker-cassandra/Dockerfile以及msa/tb/docker-postgres/Dockerfile两个Dockerfile文件,以及将msa/tb/pom.xml替。然后重新编译:

  • [https://github.com/thingsboard/thingsboard/commit/ae5632f8abbbfbb99395c727cd860f88c64821d6#diff-d7077d41b12ebeee915c2f18d84e9f5fc0d14111c74c869d3bc9cb8ed6c30f4e](https://github.com/thingsboard/thingsboard/commit/ae5632f8abbbfbb99395c727cd860f88c64821d6#diff-d7077d41b12ebeee915c2f18d84e9f5fc0d14111c74c869d3bc9cb8ed6c30f4e)

image.png

②: 你也可以,从下面的内容中复制:

  • Ⅰ:将thingsboard\msa\tb\docker-cassandra目录下面的Dockerfile,替换成以下的内容: ```shell #

    Copyright © 2016-2021 The Thingsboard Authors

    #

    Licensed under the Apache License, Version 2.0 (the “License”);

    you may not use this file except in compliance with the License.

    You may obtain a copy of the License at

    #

    http://www.apache.org/licenses/LICENSE-2.0

    #

    Unless required by applicable law or agreed to in writing, software

    distributed under the License is distributed on an “AS IS” BASIS,

    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

    See the License for the specific language governing permissions and

    limitations under the License.

    #

FROM thingsboard/openjdk11

RUN apt-get update RUN apt-get install -y curl nmap procps gnupg2 RUN echo ‘deb http://apt.postgresql.org/pub/repos/apt/ buster-pgdg main’ | tee —append /etc/apt/sources.list.d/pgdg.list > /dev/null RUN curl -L https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - RUN echo ‘deb http://downloads.apache.org/cassandra/debian 40x main’ | tee —append /etc/apt/sources.list.d/cassandra.list > /dev/null RUN curl -L https://downloads.apache.org/cassandra/KEYS | apt-key add - ENV PG_MAJOR=12 RUN apt-get update RUN apt-get install -y cassandra cassandra-tools postgresql-12 RUN update-rc.d cassandra disable RUN update-rc.d postgresql disable RUN sed -i.old ‘/ulimit/d’ /etc/init.d/cassandra

COPY logback.xml ${pkg.name}.conf start-db.sh stop-db.sh start-tb.sh upgrade-tb.sh install-tb.sh ${pkg.name}.deb /tmp/

RUN chmod a+x /tmp/*.sh \ && mv /tmp/start-tb.sh /usr/bin \ && mv /tmp/upgrade-tb.sh /usr/bin \ && mv /tmp/install-tb.sh /usr/bin \ && mv /tmp/start-db.sh /usr/bin \ && mv /tmp/stop-db.sh /usr/bin

RUN dpkg -i /tmp/${pkg.name}.deb RUN rm /tmp/${pkg.name}.deb

RUN systemctl —no-reload disable —now ${pkg.name}.service > /dev/null 2>&1 || :

RUN mv /tmp/logback.xml ${pkg.installFolder}/conf \ && mv /tmp/${pkg.name}.conf ${pkg.installFolder}/conf

ENV DATA_FOLDER=/data

ENV HTTP_BIND_PORT=9090 ENV DATABASE_TS_TYPE=cassandra

ENV PGDATA=/data/db ENV CASSANDRA_DATA=/data/cassandra

ENV SPRING_JPA_DATABASE_PLATFORM=org.hibernate.dialect.PostgreSQLDialect ENV SPRING_DRIVER_CLASS_NAME=org.postgresql.Driver ENV SPRING_DATASOURCE_URL=jdbc:postgresql://localhost:5432/thingsboard ENV SPRING_DATASOURCE_USERNAME=${pkg.user} ENV SPRING_DATASOURCE_PASSWORD=postgres

ENV CASSANDRA_HOST=localhost ENV CASSANDRA_PORT=9042 ENV CASSANDRA_HOME=/opt/cassandra

ENV PATH=$CASSANDRA_HOME/bin:$PATH ENV PATH=$PATH:/usr/lib/postgresql/$PG_MAJOR/bin

ENV PGLOG=/var/log/postgres ENV CASSANDRA_LOG=/var/log/cassandra

postgres config

RUN mkdir -p $PGLOG RUN chown -R ${pkg.user}:${pkg.user} $PGLOG RUN chown -R ${pkg.user}:${pkg.user} /var/log/postgresql RUN chown -R ${pkg.user}:${pkg.user} /var/run/postgresql

cassandra config

RUN rm -rf /var/lib/cassandra RUN chmod a+w /var/lib RUN chown -R ${pkg.user}:${pkg.user} $CASSANDRA_LOG

RUN mkdir -p $DATA_FOLDER RUN chown -R ${pkg.user}:${pkg.user} $DATA_FOLDER RUN chown -R ${pkg.user}:${pkg.user} /var/log/${pkg.name}

RUN chmod 555 ${pkg.installFolder}/bin/${pkg.name}.jar

USER ${pkg.user}

EXPOSE 9090 EXPOSE 1883 EXPOSE 5683/udp

VOLUME [“/data”]

CMD [“start-tb.sh”]

  1. - Ⅱ:将`thingsboard\msa\tb\docker-postgres`目录下的`Dockerfile`,替换成以下的内容:
  2. ```shell
  3. #
  4. # Copyright © 2016-2021 The Thingsboard Authors
  5. #
  6. # Licensed under the Apache License, Version 2.0 (the "License");
  7. # you may not use this file except in compliance with the License.
  8. # You may obtain a copy of the License at
  9. #
  10. # http://www.apache.org/licenses/LICENSE-2.0
  11. #
  12. # Unless required by applicable law or agreed to in writing, software
  13. # distributed under the License is distributed on an "AS IS" BASIS,
  14. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15. # See the License for the specific language governing permissions and
  16. # limitations under the License.
  17. #
  18. FROM thingsboard/openjdk11
  19. RUN apt-get update
  20. RUN apt-get install -y curl gnupg2
  21. RUN echo 'deb http://apt.postgresql.org/pub/repos/apt/ buster-pgdg main' | tee --append /etc/apt/sources.list.d/pgdg.list > /dev/null
  22. RUN curl -L https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -
  23. ENV PG_MAJOR 12
  24. RUN apt-get update
  25. RUN apt-get install -y postgresql-12
  26. RUN update-rc.d postgresql disable
  27. COPY logback.xml ${pkg.name}.conf start-db.sh stop-db.sh start-tb.sh upgrade-tb.sh install-tb.sh ${pkg.name}.deb /tmp/
  28. RUN chmod a+x /tmp/*.sh \
  29. && mv /tmp/start-tb.sh /usr/bin \
  30. && mv /tmp/upgrade-tb.sh /usr/bin \
  31. && mv /tmp/install-tb.sh /usr/bin \
  32. && mv /tmp/start-db.sh /usr/bin \
  33. && mv /tmp/stop-db.sh /usr/bin
  34. RUN dpkg -i /tmp/${pkg.name}.deb
  35. RUN rm /tmp/${pkg.name}.deb
  36. RUN systemctl --no-reload disable --now ${pkg.name}.service > /dev/null 2>&1 || :
  37. RUN mv /tmp/logback.xml ${pkg.installFolder}/conf \
  38. && mv /tmp/${pkg.name}.conf ${pkg.installFolder}/conf
  39. ENV DATA_FOLDER=/data
  40. ENV HTTP_BIND_PORT=9090
  41. ENV DATABASE_TS_TYPE=sql
  42. ENV PGDATA=/data/db
  43. ENV PATH=$PATH:/usr/lib/postgresql/$PG_MAJOR/bin
  44. ENV SPRING_JPA_DATABASE_PLATFORM=org.hibernate.dialect.PostgreSQLDialect
  45. ENV SPRING_DRIVER_CLASS_NAME=org.postgresql.Driver
  46. ENV SPRING_DATASOURCE_URL=jdbc:postgresql://localhost:5432/thingsboard
  47. ENV SPRING_DATASOURCE_USERNAME=${pkg.user}
  48. ENV SPRING_DATASOURCE_PASSWORD=postgres
  49. ENV PGLOG=/var/log/postgres
  50. RUN mkdir -p $PGLOG
  51. RUN chown -R ${pkg.user}:${pkg.user} $PGLOG
  52. RUN chown -R ${pkg.user}:${pkg.user} /var/run/postgresql
  53. RUN mkdir -p /data
  54. RUN chown -R ${pkg.user}:${pkg.user} /data
  55. RUN chown -R ${pkg.user}:${pkg.user} /var/log/${pkg.name}
  56. RUN chmod 555 ${pkg.installFolder}/bin/${pkg.name}.jar
  57. USER ${pkg.user}
  58. EXPOSE 9090
  59. EXPOSE 1883
  60. EXPOSE 5683/udp
  61. VOLUME ["/data"]
  62. CMD ["start-tb.sh"]
  • Ⅲ:将thingsboard\msa\tb目录下的pom.xml替换成以下的内容:
    1. <properties>
    2. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    3. <main.dir>${basedir}/../..</main.dir>
    4. <pkg.name>thingsboard</pkg.name>
    5. <tb.docker.name>tb</tb.docker.name>
    6. <tb-postgres.docker.name>tb-postgres</tb-postgres.docker.name>
    7. <tb-cassandra.docker.name>tb-cassandra</tb-cassandra.docker.name>
    8. <pkg.installFolder>/usr/share/${pkg.name}</pkg.installFolder>
    9. <pkg.upgradeVersion>3.3.0</pkg.upgradeVersion>
    10. </properties>

三、对源码进行docker镜像打包

编译命令:

  1. mvn clean install -DskipTests=true -Ddockerfile.skip=false

打包成docker镜像成功后,输出如下:

  1. [INFO] ------------------------------------------------------------------------
  2. [INFO] Reactor Summary for Thingsboard 3.2.2:
  3. [INFO]
  4. [INFO] Thingsboard ........................................ SUCCESS [ 20.774 s]
  5. [INFO] Netty MQTT Client .................................. SUCCESS [ 2.015 s]
  6. [INFO] Thingsboard Server Commons ......................... SUCCESS [ 0.197 s]
  7. [INFO] Thingsboard Server Common Data ..................... SUCCESS [ 4.490 s]
  8. [INFO] Thingsboard Server Common Utils .................... SUCCESS [ 0.279 s]
  9. [INFO] Thingsboard Server Common Messages ................. SUCCESS [ 1.421 s]
  10. [INFO] Thingsboard Actor system ........................... SUCCESS [ 1.017 s]
  11. [INFO] Thingsboard Server Stats ........................... SUCCESS [ 0.410 s]
  12. [INFO] Thingsboard Server Queue components ................ SUCCESS [ 6.499 s]
  13. [INFO] Thingsboard Server Commons ......................... SUCCESS [ 0.044 s]
  14. [INFO] Thingsboard Server Common Transport components ..... SUCCESS [ 2.645 s]
  15. [INFO] Thingsboard MQTT Transport Common .................. SUCCESS [ 1.623 s]
  16. [INFO] Thingsboard HTTP Transport Common .................. SUCCESS [ 0.692 s]
  17. [INFO] Thingsboard CoAP Transport Common .................. SUCCESS [ 1.294 s]
  18. [INFO] Thingsboard Server Common DAO API .................. SUCCESS [ 1.112 s]
  19. [INFO] Thingsboard Extensions ............................. SUCCESS [ 0.056 s]
  20. [INFO] Thingsboard Rule Engine API ........................ SUCCESS [ 1.117 s]
  21. [INFO] Thingsboard Server DAO Layer ....................... SUCCESS [ 5.978 s]
  22. [INFO] Thingsboard Rule Engine Components ................. SUCCESS [ 4.100 s]
  23. [INFO] Thingsboard Server Transport Modules ............... SUCCESS [ 0.025 s]
  24. [INFO] Thingsboard HTTP Transport Service ................. SUCCESS [ 17.420 s]
  25. [INFO] Thingsboard MQTT Transport Service ................. SUCCESS [ 10.196 s]
  26. [INFO] Thingsboard CoAP Transport Service ................. SUCCESS [ 10.264 s]
  27. [INFO] ThingsBoard Server UI .............................. SUCCESS [01:19 min]
  28. [INFO] Thingsboard Server Tools ........................... SUCCESS [ 0.596 s]
  29. [INFO] Thingsboard Rest Client ............................ SUCCESS [ 0.631 s]
  30. [INFO] ThingsBoard Server Application ..................... SUCCESS [ 25.185 s]
  31. [INFO] ThingsBoard Microservices .......................... SUCCESS [ 1.056 s]
  32. [INFO] ThingsBoard Docker Images .......................... SUCCESS [ 01:05 h]
  33. [INFO] ThingsBoard JavaScript Executor Microservice ....... SUCCESS [05:25 min]
  34. [INFO] ThingsBoard Web UI Microservice .................... SUCCESS [04:25 min]
  35. [INFO] ThingsBoard Node Microservice ...................... SUCCESS [03:22 min]
  36. [INFO] ThingsBoard Transport Microservices ................ SUCCESS [ 0.025 s]
  37. [INFO] ThingsBoard MQTT Transport Microservice ............ SUCCESS [01:46 min]
  38. [INFO] ThingsBoard HTTP Transport Microservice ............ SUCCESS [01:48 min]
  39. [INFO] ThingsBoard COAP Transport Microservice ............ SUCCESS [02:00 min]
  40. [INFO] ThingsBoard Black Box Tests ........................ SUCCESS [ 2.435 s]
  41. [INFO] ------------------------------------------------------------------------
  42. [INFO] BUILD SUCCESS
  43. [INFO] ------------------------------------------------------------------------
  44. [INFO] Total time: 01:27 h
  45. [INFO] Finished at: 2021-06-18T17:18:01+08:00
  46. [INFO] ------------------------------------------------------------------------

四、在Docker软件中,使用docker images命令,查看镜像

使用docker images命令进行查看,输入如下:

  1. 11475@greamrod-pc-company MINGW64 /f/temp-code/thingsboard (release-3.2)
  2. $ docker images
  3. REPOSITORY TAG IMAGE ID CREATED SIZE
  4. thingsboard/tb-coap-transport 3.2.2 c08296cd0663 6 minutes ago 860MB
  5. thingsboard/tb-coap-transport latest c08296cd0663 6 minutes ago 860MB
  6. thingsboard/tb-http-transport 3.2.2 f33c3b8ecbfb 8 minutes ago 858MB
  7. thingsboard/tb-http-transport latest f33c3b8ecbfb 8 minutes ago 858MB
  8. thingsboard/tb-mqtt-transport 3.2.2 fee682097390 10 minutes ago 858MB
  9. thingsboard/tb-mqtt-transport latest fee682097390 10 minutes ago 858MB
  10. thingsboard/tb-node 3.2.2 6db3f208360c 12 minutes ago 1.05GB
  11. thingsboard/tb-node latest 6db3f208360c 12 minutes ago 1.05GB
  12. thingsboard/tb-web-ui 3.2.2 5ee7ada7ebbe 15 minutes ago 226MB
  13. thingsboard/tb-web-ui latest 5ee7ada7ebbe 15 minutes ago 226MB
  14. thingsboard/tb-js-executor 3.2.2 55e9da92e2ae 20 minutes ago 320MB
  15. thingsboard/tb-js-executor latest 55e9da92e2ae 20 minutes ago 320MB
  16. thingsboard/tb-cassandra 3.2.2 ff47a0bf7d3e 25 minutes ago 1.45GB
  17. thingsboard/tb-cassandra latest ff47a0bf7d3e 25 minutes ago 1.45GB
  18. thingsboard/tb-postgres 3.2.2 c2044d60b558 36 minutes ago 1.34GB
  19. thingsboard/tb-postgres latest c2044d60b558 36 minutes ago 1.34GB
  20. thingsboard/tb 3.2.2 ba843e7de042 About an hour ago 1.05GB
  21. thingsboard/tb latest ba843e7de042 About an hour ago 1.05GB