- 一、
release-3.2.2打包docker镜像失败 - 二、将整个
thingsboard项目必须是Linux换行符 - 三、使用master分支替换release-3.2.2分支上的Dockerfile文件
- 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">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.
- postgres config
- cassandra config
一、release-3.2.2打包docker镜像失败
- 当前使用的
thingsboard版本号为:release-3.2.2。 - 使用如下命令,进行
docker镜像打包,会报错。提示:往下看,有解决方案!
mvn clean install -DskipTests=true -Ddockerfile.skip=false
二、将整个thingsboard项目必须是Linux换行符
正常情况下,对thingsboard项目进行二次开发时,是在Windows系统下进行的。而此时,整个thingsboard项目的换行符都为Windows下的CRLF,而打包thinsgboard项目的docker镜像时,需要将整个项目的换行符转为Linux下的LF。
根本原因:项目中含有的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)

②: 你也可以,从下面的内容中复制:
- Ⅰ:将
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”]
- Ⅱ:将`thingsboard\msa\tb\docker-postgres`目录下的`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/openjdk11RUN apt-get updateRUN apt-get install -y curl gnupg2RUN echo 'deb http://apt.postgresql.org/pub/repos/apt/ buster-pgdg main' | tee --append /etc/apt/sources.list.d/pgdg.list > /dev/nullRUN curl -L https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -ENV PG_MAJOR 12RUN apt-get updateRUN apt-get install -y postgresql-12RUN update-rc.d postgresql disableCOPY 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/binRUN dpkg -i /tmp/${pkg.name}.debRUN rm /tmp/${pkg.name}.debRUN 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}/confENV DATA_FOLDER=/dataENV HTTP_BIND_PORT=9090ENV DATABASE_TS_TYPE=sqlENV PGDATA=/data/dbENV PATH=$PATH:/usr/lib/postgresql/$PG_MAJOR/binENV SPRING_JPA_DATABASE_PLATFORM=org.hibernate.dialect.PostgreSQLDialectENV SPRING_DRIVER_CLASS_NAME=org.postgresql.DriverENV SPRING_DATASOURCE_URL=jdbc:postgresql://localhost:5432/thingsboardENV SPRING_DATASOURCE_USERNAME=${pkg.user}ENV SPRING_DATASOURCE_PASSWORD=postgresENV PGLOG=/var/log/postgresRUN mkdir -p $PGLOGRUN chown -R ${pkg.user}:${pkg.user} $PGLOGRUN chown -R ${pkg.user}:${pkg.user} /var/run/postgresqlRUN mkdir -p /dataRUN chown -R ${pkg.user}:${pkg.user} /dataRUN chown -R ${pkg.user}:${pkg.user} /var/log/${pkg.name}RUN chmod 555 ${pkg.installFolder}/bin/${pkg.name}.jarUSER ${pkg.user}EXPOSE 9090EXPOSE 1883EXPOSE 5683/udpVOLUME ["/data"]CMD ["start-tb.sh"]
- Ⅲ:将
thingsboard\msa\tb目录下的pom.xml替换成以下的内容:<properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><main.dir>${basedir}/../..</main.dir><pkg.name>thingsboard</pkg.name><tb.docker.name>tb</tb.docker.name><tb-postgres.docker.name>tb-postgres</tb-postgres.docker.name><tb-cassandra.docker.name>tb-cassandra</tb-cassandra.docker.name><pkg.installFolder>/usr/share/${pkg.name}</pkg.installFolder><pkg.upgradeVersion>3.3.0</pkg.upgradeVersion></properties>
三、对源码进行docker镜像打包
编译命令:
mvn clean install -DskipTests=true -Ddockerfile.skip=false
打包成docker镜像成功后,输出如下:
[INFO] ------------------------------------------------------------------------[INFO] Reactor Summary for Thingsboard 3.2.2:[INFO][INFO] Thingsboard ........................................ SUCCESS [ 20.774 s][INFO] Netty MQTT Client .................................. SUCCESS [ 2.015 s][INFO] Thingsboard Server Commons ......................... SUCCESS [ 0.197 s][INFO] Thingsboard Server Common Data ..................... SUCCESS [ 4.490 s][INFO] Thingsboard Server Common Utils .................... SUCCESS [ 0.279 s][INFO] Thingsboard Server Common Messages ................. SUCCESS [ 1.421 s][INFO] Thingsboard Actor system ........................... SUCCESS [ 1.017 s][INFO] Thingsboard Server Stats ........................... SUCCESS [ 0.410 s][INFO] Thingsboard Server Queue components ................ SUCCESS [ 6.499 s][INFO] Thingsboard Server Commons ......................... SUCCESS [ 0.044 s][INFO] Thingsboard Server Common Transport components ..... SUCCESS [ 2.645 s][INFO] Thingsboard MQTT Transport Common .................. SUCCESS [ 1.623 s][INFO] Thingsboard HTTP Transport Common .................. SUCCESS [ 0.692 s][INFO] Thingsboard CoAP Transport Common .................. SUCCESS [ 1.294 s][INFO] Thingsboard Server Common DAO API .................. SUCCESS [ 1.112 s][INFO] Thingsboard Extensions ............................. SUCCESS [ 0.056 s][INFO] Thingsboard Rule Engine API ........................ SUCCESS [ 1.117 s][INFO] Thingsboard Server DAO Layer ....................... SUCCESS [ 5.978 s][INFO] Thingsboard Rule Engine Components ................. SUCCESS [ 4.100 s][INFO] Thingsboard Server Transport Modules ............... SUCCESS [ 0.025 s][INFO] Thingsboard HTTP Transport Service ................. SUCCESS [ 17.420 s][INFO] Thingsboard MQTT Transport Service ................. SUCCESS [ 10.196 s][INFO] Thingsboard CoAP Transport Service ................. SUCCESS [ 10.264 s][INFO] ThingsBoard Server UI .............................. SUCCESS [01:19 min][INFO] Thingsboard Server Tools ........................... SUCCESS [ 0.596 s][INFO] Thingsboard Rest Client ............................ SUCCESS [ 0.631 s][INFO] ThingsBoard Server Application ..................... SUCCESS [ 25.185 s][INFO] ThingsBoard Microservices .......................... SUCCESS [ 1.056 s][INFO] ThingsBoard Docker Images .......................... SUCCESS [ 01:05 h][INFO] ThingsBoard JavaScript Executor Microservice ....... SUCCESS [05:25 min][INFO] ThingsBoard Web UI Microservice .................... SUCCESS [04:25 min][INFO] ThingsBoard Node Microservice ...................... SUCCESS [03:22 min][INFO] ThingsBoard Transport Microservices ................ SUCCESS [ 0.025 s][INFO] ThingsBoard MQTT Transport Microservice ............ SUCCESS [01:46 min][INFO] ThingsBoard HTTP Transport Microservice ............ SUCCESS [01:48 min][INFO] ThingsBoard COAP Transport Microservice ............ SUCCESS [02:00 min][INFO] ThingsBoard Black Box Tests ........................ SUCCESS [ 2.435 s][INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 01:27 h[INFO] Finished at: 2021-06-18T17:18:01+08:00[INFO] ------------------------------------------------------------------------
四、在Docker软件中,使用docker images命令,查看镜像
使用docker images命令进行查看,输入如下:
11475@greamrod-pc-company MINGW64 /f/temp-code/thingsboard (release-3.2)$ docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEthingsboard/tb-coap-transport 3.2.2 c08296cd0663 6 minutes ago 860MBthingsboard/tb-coap-transport latest c08296cd0663 6 minutes ago 860MBthingsboard/tb-http-transport 3.2.2 f33c3b8ecbfb 8 minutes ago 858MBthingsboard/tb-http-transport latest f33c3b8ecbfb 8 minutes ago 858MBthingsboard/tb-mqtt-transport 3.2.2 fee682097390 10 minutes ago 858MBthingsboard/tb-mqtt-transport latest fee682097390 10 minutes ago 858MBthingsboard/tb-node 3.2.2 6db3f208360c 12 minutes ago 1.05GBthingsboard/tb-node latest 6db3f208360c 12 minutes ago 1.05GBthingsboard/tb-web-ui 3.2.2 5ee7ada7ebbe 15 minutes ago 226MBthingsboard/tb-web-ui latest 5ee7ada7ebbe 15 minutes ago 226MBthingsboard/tb-js-executor 3.2.2 55e9da92e2ae 20 minutes ago 320MBthingsboard/tb-js-executor latest 55e9da92e2ae 20 minutes ago 320MBthingsboard/tb-cassandra 3.2.2 ff47a0bf7d3e 25 minutes ago 1.45GBthingsboard/tb-cassandra latest ff47a0bf7d3e 25 minutes ago 1.45GBthingsboard/tb-postgres 3.2.2 c2044d60b558 36 minutes ago 1.34GBthingsboard/tb-postgres latest c2044d60b558 36 minutes ago 1.34GBthingsboard/tb 3.2.2 ba843e7de042 About an hour ago 1.05GBthingsboard/tb latest ba843e7de042 About an hour ago 1.05GB
