Git Product home page Git Product logo

weechat-container's Introduction

Containerized WeeChat

Build Status

Build of WeeChat images using Docker (default) or Podman.

Requirements

The following packages are required to build images:

  • Docker or Podman

Optional dependencies:

  • Python ≥ 3.6 if you use the provided Makefile or build.py script

Image types

Images are based on Debian or Alpine (smaller size, with same features):

  • Debian:
    • debian (~ 350 MB)
    • debian-slim: slim version (~ 120 MB)
  • Alpine:
    • alpine (~ 150 MB)
    • alpine-slim: slim version (~ 30 MB)

The slim version includes all plugins except these ones:

  • script manager (command /script)
  • scripting languages: perl, python, ruby, lua, tcl, guile, php
  • spell

Install and run with Docker Hub

You can install and run directly the latest version from the Docker Hub:

docker run -it weechat/weechat

Or the Alpine version:

docker run -it weechat/weechat:latest-alpine

For a specific WeeChat version (Debian):

docker run -it weechat/weechat:4.3.2

Run with custom home directories on host to persist data (WeeChat ≥ 3.2, using XDG directories):

mkdir -p ~/.weechat-container/config ~/.weechat-container/data ~/.weechat-container/cache
chmod 777 ~/.weechat-container/config ~/.weechat-container/data ~/.weechat-container/cache
docker run -it -v $HOME/.weechat-container/config:/home/user/.config/weechat -v $HOME/.weechat-container/data:/home/user/.local/share/weechat -v $HOME/.weechat-container/cache:/home/user/.cache/weechat weechat/weechat

Run with a custom single home directory on host to persist data (any WeeChat version):

mkdir -p ~/.weechat-container
chmod 777 ~/.weechat-container
docker run -it -v $HOME/.weechat-container:/home/user/.weechat weechat/weechat weechat -d /home/user/.weechat

Build

A Makefile is provided and supports these variables:

  • BUILDER: the tool to build the image: docker, podman or any equivalent tool (default is docker)
  • VERSION: the WeeChat version to build (default is latest which is the latest stable version, use devel for development version, which is built every day).

Build a Debian-based image with latest stable version of WeeChat:

make debian

Build all images with latest stable version of WeeChat:

make all-images

Build an Alpine-based image with Podman, slim version, WeeChat 4.3.2:

make BUILDER=podman VERSION=4.3.2 alpine-slim

Build a Debian-based image with WeeChat 4.3.2, directly with docker:

docker build -f debian/Containerfile --build-arg VERSION=4.3.2 .

Copyright

Copyright © 2021-2024 Sébastien Helleu

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.

weechat-container's People

Contributors

flashcode avatar hamishfagg avatar ksurl avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

weechat-container's Issues

Update to Alpine 3.18

Alpine 3.15 will reach its EOL on 2023-11-01 (in 4 months), an update to Alpine 3.18 would be appreciated.

Trying WeeChat 4.0.1:

The slim version builds out-of-the-box and seemingly runs fine (at least I was able to join #weechat 😉), but we see a segfault when running tests (I'm not going to attach the crash dump since you're likely going to see exactly the same, it's a container after all...):

# ctest -V
UpdateCTestConfiguration  from :/tmp/weechat/build/DartConfiguration.tcl
UpdateCTestConfiguration  from :/tmp/weechat/build/DartConfiguration.tcl
Test project /tmp/weechat/build
Constructing a list of tests
Done constructing a list of tests
Updating test list for fixtures
Added 0 tests to meet fixture requirements
Checking test dependency graph...
Checking test dependency graph end
test 1
    Start 1: unit

1: Test command: /tmp/weechat/build/tests/tests "-v"
1: Working Directory: /tmp/weechat/build/tests
1: Environment variables: 
1:  WEECHAT_TESTS_ARGS=-p
1:  WEECHAT_EXTRA_LIBDIR=/tmp/weechat/build/src
1:  WEECHAT_TESTS_SCRIPTS_DIR=/tmp/weechat/tests/scripts/python
1:  WEECHAT_TESTS_PLUGINS_LIB=/tmp/weechat/build/tests/libweechat_unit_tests_plugins.so
1: Test timeout computed to be: 10000000
1: WeeChat arguments: "/tmp/weechat/build/tests/tests --dir ./tmp_weechat_test -p"
1:   ___       __         ______________        _____ 
1:   __ |     / /___________  ____/__  /_______ __  /_
1:   __ | /| / /_  _ \  _ \  /    __  __ \  __ `/  __/
1:   __ |/ |/ / /  __/  __/ /___  _  / / / /_/ // /_  
1:   ____/|__/  \___/\___/\____/  /_/ /_/\__,_/ \__/  
1: WeeChat 4.0.1 [compiled on Jun 30 2023 19:46:33]
1: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: 
1: Welcome to WeeChat!
1: 
1: If you are discovering WeeChat, it is recommended to read at least the quickstart guide, and the user's guide if you have some time; they explain main WeeChat concepts.
1: All WeeChat docs are available at: https://weechat.org/doc/
1: 
1: Moreover, there is inline help with /help on all commands and options (use Tab key to complete the name).
1: The command /fset can help to customize WeeChat.
1: 
1: You can add and connect to an IRC server with /server and /connect commands (see /help server).
1: 
1: ---
1: 
1: Bar "input" created
1: Bar "title" created
1: Bar "status" created
1: Bar "nicklist" created
1: Auto-loading plugins from path in environment variable WEECHAT_EXTRA_LIBDIR ("/tmp/weechat/build/src")
1: Plugin "fifo" loaded
1: Plugin "exec" loaded
1: Plugin "trigger" loaded
1: Plugin "irc" loaded
1: Plugin "alias" loaded
1: Plugin "charset" loaded
1: Plugin "buflist" loaded
1: Plugin "xfer" loaded
1: Plugin "fset" loaded
1: Plugin "relay" loaded
1: Plugin "logger" loaded
1: Plugin "typing" loaded
1: Loading tests on plugins: "/tmp/weechat/build/tests/libweechat_unit_tests_plugins.so"
1: >>> Running command: /command core version
1: WeeChat 4.0.1 [compiled on Jun 30 2023 19:46:33]
1: >>> Running command: /debug dirs
1: 
1: Directories:
1:   home:
1:     config: ./tmp_weechat_test
1:     data: ./tmp_weechat_test
1:     cache: ./tmp_weechat_test
1:     runtime: ./tmp_weechat_test
1:   lib: /opt/weechat/lib/weechat
1:   lib (extra): /tmp/weechat/build/src
1:   share: /opt/weechat/share/weechat
1:   locale: /opt/weechat/share/locale
1: >>> Running command: /debug libs
1: 
1: Libs:
1:   core:
1:     ncurses: (?)
1:     gcrypt: 1.10.2
1:     gnutls: 3.8.0
1:     curl: 8.1.2
1:     zlib: 1.2.13
1:     zstd: 1.5.5
1: 
1: TEST(XferNetwork, ConvertIntegerToIpv4) - 0 ms
1: TEST(XferFile, CalculateSpeed) - 0 ms
1: TEST(XferFile, FindFilename) - 0 ms
1: TEST(XferFile, FindSuffix) - 0 ms
1: TEST(XferFile, CheckSuffix) - 0 ms
1: TEST(XferFile, Resume) - 0 ms
1: TEST(XferFile, SearchCrc32) - 0 ms
1: TEST(TypingStatus, NickAddSearchRemove) - 0 ms
1: TEST(TypingStatus, SelfAddSearch) - 0 ms
1: TEST(TypingStatus, SearchState) - 0 ms
1: TEST(Typing, SetupHooks) - 0 ms
1: TEST(Typing, TypingResetBufferSignalCb) - 0 ms
1: TEST(Typing, TypingSetNickSignalCb) - 0 ms
1: TEST(Typing, TimerCb) - 0 ms
1: TEST(Typing, StatusNicksHashMapCb) - 0 ms
1: TEST(Typing, StatusNicksStatusMapCb) - 0 ms
1: TEST(Typing, StatusSelfStatusMapCb) - 0 ms
1: TEST(Typing, InputTextForBufferModifierCb) - 0 ms
1: TEST(Typing, InputTextChangedSignalCb) - 0 ms
1: TEST(Typing, BufferClosingSignalCb) - 0 ms
1: TEST(Typing, SendSignal) - 0 ms
1: TEST(TriggerConfig, Free) - 0 ms
1: TEST(TriggerConfig, Write) - 0 ms
1: TEST(TriggerConfig, Read) - 0 ms
1: TEST(TriggerConfig, Init) - 0 ms
1: TEST(TriggerConfig, ReloadCb) - 0 ms
1: TEST(TriggerConfig, TriggerWriteDefaultCb) - 0 ms
1: TEST(TriggerConfig, TriggerReadCb) - 0 ms
1: TEST(TriggerConfig, UseTempTriggers) - 0 ms
1: TEST(TriggerConfig, CreateOptionTemp) - 0 ms
1: TEST(TriggerConfig, ChangeTriggerOption) - 0 ms
1: TEST(TriggerConfig, ChangeTriggerCommand) - 0 ms
1: TEST(TriggerConfig, ChangeTriggerRegex) - 0 ms
1: TEST(TriggerConfig, ChangeTriggerArguments) - 0 ms
1: TEST(TriggerConfig, ChangeTriggerHook) - 0 ms
1: TEST(TriggerConfig, ChangeTriggerEnabled) - 0 ms
1: TEST(TriggerConfig, ChangeEnabled) - 0 ms
1: TEST(TriggerConfig, DefaultTriggerServerPass) - 1 ms
1: TEST(TriggerConfig, DefaultTriggerMsgAuth) - 1 ms
1: TEST(TriggerConfig, DefaultTriggerCmdPassRegister) - 1 ms
1: TEST(TriggerConfig, DefaultTriggerCmdPass) - 6 ms
1: TEST(TriggerConfig, DefaultTriggerBeep) - 0 ms
1: TEST(Trigger, DebugDumpCb) - 0 ms
1: TEST(Trigger, PrintLog) - 0 ms
1: TEST(Trigger, FreeAll) - 0 ms
1: TEST(Trigger, Copy) - 0 ms
1: TEST(Trigger, Rename) - 1 ms
1: TEST(Trigger, CreateDefault) - 0 ms
1: TEST(Trigger, New)Creating disabled trigger with hook "signal"
1: Creating enabled trigger with hook "signal"
1: Creating disabled trigger with hook "hsignal"
1: Creating enabled trigger with hook "hsignal"
1: Creating disabled trigger with hook "modifier"
1: Creating enabled trigger with hook "modifier"
1: Creating disabled trigger with hook "line"
1: Creating enabled trigger with hook "line"
1: Creating disabled trigger with hook "print"
1: Creating enabled trigger with hook "print"
1: Creating disabled trigger with hook "command"
1: Creating enabled trigger with hook "command"
1: Creating disabled trigger with hook "command_run"
1: Creating enabled trigger with hook "command_run"
1: Creating disabled trigger with hook "timer"
1: Creating enabled trigger with hook "timer"
1: Creating disabled trigger with hook "config"
1: Creating enabled trigger with hook "config"
1: Creating disabled trigger with hook "focus"
1: Creating enabled trigger with hook "focus"
1: Creating disabled trigger with hook "info"
1: Creating enabled trigger with hook "info"
1: Creating disabled trigger with hook "info_hashtable"
1: Creating enabled trigger with hook "info_hashtable"
1:  - 3 ms
1: TEST(Trigger, NameValid) - 0 ms
1: TEST(Trigger, SplitCommand) - 0 ms
1: TEST(Trigger, RegexSplit) - 0 ms
1: TEST(Trigger, Hook) - 0 ms
1: TEST(Trigger, Unhook) - 0 ms
1: TEST(Trigger, SearchPostAction) - 0 ms
1: TEST(Trigger, SearchReturnCode) - 0 ms
1: TEST(Trigger, SearchRegexCommand) - 0 ms
1: TEST(Trigger, SearchHookType) - 0 ms
1: TEST(Trigger, SearchOption) - 0 ms
1: TEST(RelayIrc, RelayIrcPrintLog) - 0 ms
1: TEST(RelayIrc, RelayIrcAddToInfolist) - 0 ms
1: TEST(RelayIrc, RelayIrcFree) - 0 ms
1: TEST(RelayIrc, RelayIrcGetInitialStatus) - 0 ms
1: TEST(RelayIrc, RelayIrcAllocWithInfolist) - 0 ms
1: TEST(RelayIrc, RelayIrcAlloc) - 0 ms
1: TEST(RelayIrc, RelayIrcCloseConnection) - 0 ms
1: TEST(RelayIrcWithClient, RelayIrcRecv)relay: listening on port 9000 (relay: irc.test, IPv4, max 5 clients)
1: relay: new client on port (null): 1/irc.test/test (waiting auth)
1: relay: client 1/irc.test/test connected/authenticated
1: relay: client 1/irc.test2/test connected/authenticated
1: =!= Error with command "/quote WHOIS bob" (help on command: /help quote)
1: relay: socket closed for irc.test (port: (null))
1:  - 13 ms
1: TEST(RelayIrcWithClient, RelayIrcRecvCommandCapab)relay: listening on port 9000 (relay: irc.test, IPv4, max 5 clients)
1: relay: new client on port (null): 1/irc.test/test (waiting auth)
1: relay: socket closed for irc.test (port: (null))
1:  - 9 ms
1: TEST(RelayIrc, RelayGetListCaps) - 0 ms
1: TEST(RelayIrcWithClient, RelayIrcGetSupportedCaps)relay: listening on port 9000 (relay: irc.test, IPv4, max 5 clients)
1: relay: new client on port (null): 1/irc.test/test (waiting auth)
1: relay: socket closed for irc.test (port: (null))
1:  - 6 ms
1: TEST(RelayIrcWithClient, RelayIrcCapEnabled)relay: listening on port 9000 (relay: irc.test, IPv4, max 5 clients)
1: relay: new client on port (null): 1/irc.test/test (waiting auth)
1: relay: socket closed for irc.test (port: (null))
1:  - 7 ms
1: TEST(RelayIrc, RelayIrcCapabilityFreeDb) - 0 ms
1: TEST(RelayIrc, RelayIrcCapabilityCompareCb) - 0 ms
1: TEST(RelayIrc, RelayIrcHookSignals) - 0 ms
1: TEST(RelayIrcWithClient, RelayIrcInputSend)relay: listening on port 9000 (relay: irc.test, IPv4, max 5 clients)
1: relay: new client on port (null): 1/irc.test/test (waiting auth)
1: relay: socket closed for irc.test (port: (null))
1:  - 6 ms
1: TEST(RelayIrc, RelayIrcSendJoinChannels) - 0 ms
1: TEST(RelayIrc, RelayIrcSendJoin) - 0 ms
1: TEST(RelayIrc, RelayIrcSendChannelBacklog) - 0 ms
1: TEST(RelayIrc, RelayIrcGetLineInfo) - 0 ms
1: TEST(RelayIrc, RelayIrcHsignalIrcRedirCb) - 0 ms
1: TEST(RelayIrc, RelayIrcSignalIrcDiscCb) - 0 ms
1: TEST(RelayIrc, RelayIrcSignalIrcOuttagsCb) - 0 ms
1: TEST(RelayIrc, RelayIrcTagRelayClientId) - 0 ms
1: TEST(RelayIrc, RelayIrcSignalIrcIn2Cb) - 0 ms
1: TEST(RelayIrcWithClient, RelayIrcParseCapMessage)relay: listening on port 9000 (relay: irc.test, IPv4, max 5 clients)
1: relay: new client on port (null): 1/irc.test/test (waiting auth)
1: relay: socket closed for irc.test (port: (null))
1:  - 8 ms
1: TEST(RelayIrcWithClient, RelayIrcSendf)
1: *** Very bad! WeeChat is crashing (SIGSEGV received)
1: *** Full crash dump was saved to ./tmp_weechat_test/weechat_crash_20230630_3984.log file.
1: ***
1: *** Please help WeeChat developers to fix this bug:
1: ***
1: ***   1. If you have a core file, please run: gdb /path/to/weechat core
1: ***      then issue command: "bt full" and send result to developers.
1: ***      See the user's guide for more info about enabling the core files
1: ***      and reporting crashes:
1: ***      https://weechat.org/doc/weechat/stable/user/#report_crashes
1: ***
1: ***   2. Otherwise send the backtrace (below), only if it is a complete trace.
1: ***      Keep the crash log file, just in case developers ask you some info
1: ***      (be careful, private info like passwords may be in this file).
1: 
1: ======= WeeChat backtrace =======
1: (written by WeeChat 4.0.1, compiled on Jun 30 2023 19:46:33)
1:   No backtrace info (no debug info available or no backtrace possible on your system).
1: ======= End of  backtrace =======
1/1 Test #1: unit .............................Subprocess aborted***Exception:   0.37 sec

0% tests passed, 1 tests failed out of 1

Total Test time (real) =   0.37 sec

The following tests FAILED:
	  1 - unit (Subprocess aborted)
Errors while running CTest
Output from these tests are in: /tmp/weechat/build/Testing/Temporary/LastTest.log
Use "--rerun-failed --output-on-failure" to re-run the failed cases verbosely.

Building the full version with script support fails because cmake can't find PHP (see below). I've installed both the php81-dev and php81-embed packages (as replacements for php7-dev and php7-embed), but no luck. Building with -DENABLE_PHP=OFF works, but we naturally still see the segfault when testing.

# cmake .. -DCMAKE_INSTALL_PREFIX=/opt/weechat -DENABLE_MAN=ON -DENABLE_HEADLESS=ON -DENABLE_TESTS=ON
-- The C compiler identification is GNU 12.2.1
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Found PkgConfig: /usr/bin/pkg-config (found version "1.9.5") 
-- Looking for include file langinfo.h
-- Looking for include file langinfo.h - found
-- Looking for include file sys/resource.h
-- Looking for include file sys/resource.h - found
-- Looking for mallinfo
-- Looking for mallinfo - not found
-- Looking for mallinfo2
-- Looking for mallinfo2 - not found
-- Looking for eat_newline_glitch
-- Looking for eat_newline_glitch - found
-- Looking for include file libintl.h
-- Looking for include file libintl.h - found
-- Looking for dgettext
-- Looking for dgettext - found
-- Found Intl: /usr/lib/libintl.so (found version "0.21.1") 
-- Found GCRYPT: -lgcrypt -lgpg-error  
-- Found ZLIB: /lib/libz.so (found version "1.2.13") 
-- Checking for module 'libzstd'
--   Found libzstd, version 1.5.5
-- Looking for iconv_open
-- Looking for iconv_open - found
-- Performing Test ICONV_2ARG_IS_CONST
-- Performing Test ICONV_2ARG_IS_CONST - Failed
-- Found CURL: /usr/lib/libcurl.so (found version "8.1.2")  
-- Looking for flock
-- Looking for flock - found
-- Looking for backtrace
-- Looking for backtrace - not found
-- Checking for module 'python3-embed'
--   Found python3-embed, version 3.11
-- Checking for one of the modules 'ruby-3.2;ruby-3.1;ruby-3.0;ruby-2.7;ruby-2.6;ruby-2.5;ruby-2.4;ruby-2.3;ruby-2.2;ruby-2.1;ruby-2.0;ruby-1.9;ruby'
-- Checking for one of the modules 'lua5.4;lua-5.4;lua54;lua5.3;lua-5.3;lua53;lua5.2;lua-5.2;lua52;lua5.1;lua-5.1;lua51;lua-5.0;lua5.0;lua50;lua'
-- Found Tclsh: /usr/bin/tclsh (found version "8.6") 
-- Found TCL: /usr/lib/libtcl8.6.so  
-- Could NOT find TCLTK (missing: TK_LIBRARY TK_INCLUDE_PATH) 
-- Could NOT find TK (missing: TK_LIBRARY TK_INCLUDE_PATH) 
-- Checking for one of the modules 'guile-3.0;guile-2.2;guile-2.0'
-- Looking for scm_install_gmp_memory_functions
-- Looking for scm_install_gmp_memory_functions - not found
-- Checking for one of the modules 'php8;php7'
CMake Warning at cmake/FindPHP.cmake:66 (message):
  Could not find libphp.  Ensure PHP >=7.0.0 development libraries are
  installed and compiled with `--enable-embed`.  Ensure `php-config` is in
  `PATH`.  You may set `-DCMAKE_LIBRARY_PATH=...` to the directory containing
  libphp.
Call Stack (most recent call first):
  src/plugins/CMakeLists.txt:191 (find_package)


CMake Error at src/plugins/CMakeLists.txt:195 (message):
  Php not found


-- Looking for aspell_version_string
-- Looking for aspell_version_string - found
-- Checking for one of the modules 'ncursesw'
-- Looking for include file ncursesw/ncurses.h
-- Looking for include file ncursesw/ncurses.h - not found
-- Looking for include file ncurses.h
-- Looking for include file ncurses.h - found
-- Checking for one of the modules 'cpputest'
-- The CXX compiler identification is GNU 12.2.1
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring incomplete, errors occurred!

Note: I'm no C developer, so no idea how to debug any of this, I'm just reporting my findings so someone more experienced knows that there are some issues 👍

alpine image permissions issues

When running the alpine image using the documented examples for custom home-directory persisted data:

mkdir -p ~/.weechat-container/config ~/.weechat-container/data ~/.weechat-container/cache
docker run -ti -v $HOME/.weechat-container/config:/home/user/.config/weechat -v $HOME/.weechat-container/data:/home/user/.local/share/weechat -v $HOME/.weechat-container/cache:/home/user/.cache/weechat weechat

There are permissions errors reading and writing files:

19:31   ___       __         ______________        _____
19:31   __ |     / /___________  ____/__  /_______ __  /_
19:31   __ | /| / /_  _ \  _ \  /    __  __ \  __ `/  __/
19:31   __ |/ |/ / /  __/  __/ /___  _  / / / /_/ // /_
19:31   ____/|__/  \___/\___/\____/  /_/ /_/\__,_/ \__/
19:31 WeeChat 4.3.2 [compiled on Jun  6 2024 20:29:27]
19:31 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
19:31
19:31 Welcome to WeeChat!
19:31
19:31 If you are discovering WeeChat, it is recommended to read at least the quickstart guide, and the user's guide if you have some time; they explain main WeeChat concepts.
19:31 All WeeChat docs are available at: https://weechat.org/doc/
19:31
19:31 Moreover, there is inline help with /help on all commands and options (use Tab key to complete the name).
19:31 The command /fset can help to customize WeeChat.
19:31
19:31 You can add and connect to an IRC server with /server and /connect commands (see /help server).
19:31
19:31 ---
19:31
19:31 =!= Cannot create file "/home/user/.config/weechat/sec.conf.weechattmp"
19:31 =!= Error writing configuration file "/home/user/.config/weechat/sec.conf"
19:31 =!= WARNING: failed to read configuration file "/home/user/.config/weechat/sec.conf" (Permission denied)
19:31 =!= WARNING: file "/home/user/.config/weechat/sec.conf" will be overwritten on exit with default values (it is HIGHLY recommended to backup this file now)
19:31 =!= Cannot create file "/home/user/.config/weechat/weechat.conf.weechattmp"
19:31 =!= Error writing configuration file "/home/user/.config/weechat/weechat.conf"
19:31 =!= WARNING: failed to read configuration file "/home/user/.config/weechat/weechat.conf" (Permission denied)
19:31 =!= WARNING: file "/home/user/.config/weechat/weechat.conf" will be overwritten on exit with default values (it is HIGHLY recommended to backup this file now)

Note: this does not happen with the weechat/weechat:latest-debian image, only alpine.

Docker Healthcheck support on Weechat Container

Describe the feature
Being able to see a "health status" of the Docker container.

Describe the solution you'd like
I would like support for the Docker Healthcheck (that is also shown in other Docker management software).
See more info about this useful feature for stack: https://riptutorial.com/docker/example/11015/healthcheck--instruction

Describe alternatives you've considered
I am not sure how the app works so, if one could explaind how to manually do it, I/he can suggest something to achieve that.
For instance, a running ui on port 9000 can be tested using:

HEALTHCHECK --interval=60s --timeout=10s --retries=3 CMD curl -sS http://localhost:9000 || exit 1

This either to be embedded to the dockerfile or added by user to the stackfile

Publish and advertise official container

Distributing weechat as a container should become the recommended way to run it. Still at this moment we only have this repository which is used to build containers, not to publish them.

  • configure pipelines for building
  • assure containers endup on docker.io and quay.io, both have ability to automatically build containers, so a GHA push strategy may not be required.
  • advertise containers on weechat main page and https://weechat.org/download/ one

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.