[JAVA] Liberty sur Docker

Créez un environnement d'exécution Liberty sur Docker. Vous pouvez utiliser websphere-liberty, mais je veux le traduire en japonais et je veux comprendre le Dockerfile et le mécanisme, j'ai donc écrit un Dockerfile. C'était. En plus de websphere-liberty, nous nous référons également à ibmjava.

ibmjava: 8-jre est FROM ubuntu:18.04.3 ⇒ Installation d'IBM JRE. websphere-liberté FROM ibmjava:8-jre ⇒ Installation Liberty. Installez et japonaisisez linux alpin, IBM JRE, liberty.

Exemple de Dockerfile

dockerfile


FROM scratch
ADD alpine-minirootfs-3.12.0-x86_64.tar.gz /

RUN apk update \
    && ALPINE_GLIBC_BASE_URL="https://github.com/sgerrand/alpine-pkg-glibc/releases/download" \
    && ALPINE_GLIBC_PACKAGE_VERSION="2.31-r0" \
    && ALPINE_GLIBC_BASE_PACKAGE_FILENAME="glibc-$ALPINE_GLIBC_PACKAGE_VERSION.apk" \
    && ALPINE_GLIBC_BIN_PACKAGE_FILENAME="glibc-bin-$ALPINE_GLIBC_PACKAGE_VERSION.apk" \
    && ALPINE_GLIBC_I18N_PACKAGE_FILENAME="glibc-i18n-$ALPINE_GLIBC_PACKAGE_VERSION.apk" \
    && apk add --no-cache unzip \
    && apk --no-cache --virtual .build-deps add binutils tzdata \
    && cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime \
    && echo "Asia/Tokyo" >  /etc/timezone \
    && wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub \
    && wget -q "$ALPINE_GLIBC_BASE_URL/$ALPINE_GLIBC_PACKAGE_VERSION/$ALPINE_GLIBC_BASE_PACKAGE_FILENAME" \
               "$ALPINE_GLIBC_BASE_URL/$ALPINE_GLIBC_PACKAGE_VERSION/$ALPINE_GLIBC_BIN_PACKAGE_FILENAME" \
               "$ALPINE_GLIBC_BASE_URL/$ALPINE_GLIBC_PACKAGE_VERSION/$ALPINE_GLIBC_I18N_PACKAGE_FILENAME" \
    && apk add --no-cache \
           "$ALPINE_GLIBC_BASE_PACKAGE_FILENAME" \
           "$ALPINE_GLIBC_BIN_PACKAGE_FILENAME" \
           "$ALPINE_GLIBC_I18N_PACKAGE_FILENAME" \
    && rm  "$ALPINE_GLIBC_BASE_PACKAGE_FILENAME" \
           "$ALPINE_GLIBC_BIN_PACKAGE_FILENAME" \
           "$ALPINE_GLIBC_I18N_PACKAGE_FILENAME" \
    && /usr/glibc-compat/bin/localedef -i ja_JP -f UTF-8 ja_JP.UTF-8 \
    && GCC_LIBS_URL="https://archive.archlinux.org/packages/g/gcc-libs/gcc-libs-8.3.0-1-x86_64.pkg.tar.xz" \
    && wget -q -O /tmp/gcc-libs.tar.xz ${GCC_LIBS_URL} \
    && mkdir /tmp/gcc \
    && tar -xf /tmp/gcc-libs.tar.xz -C /tmp/gcc \
    && mv /tmp/gcc/usr/lib/libgcc* /tmp/gcc/usr/lib/libstdc++* /usr/glibc-compat/lib \
    && strip /usr/glibc-compat/lib/libgcc_s.so.* /usr/glibc-compat/lib/libstdc++.so* \
    && apk del --purge .build-deps \
    && apk add --no-cache ca-certificates openssl \
    && rm -rf /tmp/gcc-libs.tar.xz /tmp/gcc

ENV JAVA_VERSION 1.8.0_sr6fp11

RUN set -eux; \
    YML_FILE='jre/linux/x86_64/index.yml'; \
    BASE_URL="https://public.dhe.ibm.com/ibmdl/export/pub/systems/cloud/runtimes/java/meta/"; \
    wget -q -U UA_IBM_JAVA_Docker -O /tmp/index.yml ${BASE_URL}/${YML_FILE}; \
    JAVA_URL=$(sed -n '/^'${JAVA_VERSION}:'/{n;s/\s*uri:\s//p}'< /tmp/index.yml); \
    wget -q -U UA_IBM_JAVA_Docker -O /tmp/ibm-java.bin ${JAVA_URL}; \
    echo "INSTALLER_UI=silent" > /tmp/response.properties; \
    echo "USER_INSTALL_DIR=/opt/ibm/java" >> /tmp/response.properties; \
    echo "LICENSE_ACCEPTED=TRUE" >> /tmp/response.properties; \
    mkdir -p /opt/ibm; \
    chmod +x /tmp/ibm-java.bin; \
    /tmp/ibm-java.bin -i silent -f /tmp/response.properties; \
    rm -f /tmp/response.properties /tmp/index.yml /tmp/ibm-java.bin

# Install WebSphere Liberty
ENV LIBERTY_VERSION 20.0.0_07

ARG LIBERTY_URL 
ARG DOWNLOAD_OPTIONS=""

RUN LIBERTY_URL=${LIBERTY_URL:-$(wget -q -O - https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/wasdev/downloads/wlp/index.yml  | grep $LIBERTY_VERSION -A 6 | sed -n 's/\s*kernel:\s//p' | tr -d '\r' )}  \
    && wget -q $DOWNLOAD_OPTIONS $LIBERTY_URL -U UA-IBM-WebSphere-Liberty-Docker -O /tmp/wlp.zip \
    && unzip -q /tmp/wlp.zip -d /opt/ibm \
    && rm /tmp/wlp.zip

ENV JAVA_HOME=/opt/ibm/java/jre \
    PATH=/opt/ibm/java/jre/bin:/opt/ibm/wlp/bin:$PATH \
    IBM_JAVA_OPTIONS="-XX:+UseContainerSupport" \
    LANG=ja_JP.UTF-8 LANGUAGE=ja_JP.UTF-8

RUN /opt/ibm/wlp/bin/server create
RUN /opt/ibm/wlp/bin/installUtility install defaultServer

EXPOSE 9080 9443

CMD ["/opt/ibm/wlp/bin/server", "run", "defaultServer"]

Message de démarrage

Au démarrage, le message suivant a été émis.

IBM J9 VM version 8.0.6.11 - pxa6480sr6fp11-20200602_01(SR6 FP11) (ja_JP)Et defaultServer(WebSphere Application Server 20.0.0.7/wlp-1.0.42.cl200720200625-0300)Est en cours d'exécution
[AUDIT   ] CWWKE0001I:Le serveur defaultServer a été démarré.
[AUDIT   ] CWWKE0100I:Ce produit est autorisé pour une utilisation en développement et une utilisation limitée en production. Tous les termes de la licence peuvent être consultés ci-dessous: https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/wasdev/license/base_ilan/ilan/20.0.0.7/lafiles/ja.html
[avertissement] CWWKF0009W:Le serveur n'est configuré pour installer aucune des fonctionnalités.
[AUDIT   ] CWWKF0011I:Le serveur defaultServer est prêt pour Smarter Planet. defaultServer server est 2.Cela a commencé en 961 secondes.

Fonctionnalité

-Il est basé sur Alpine et est construit à partir de zéro. ・ Il a été traduit en japonais. -La dernière version d'IBM JRE et Liberty en date du 8 juillet 2020 est utilisée. -Je veux exécuter / opt / ibm / wlp / bin / client, etc., donc je n'utilise pas de liens tels que / config.

index.yml a été mis à jour. S'il n'a pas été mis à jour, téléchargez-le directement au lieu d'obtenir le chemin depuis index.yml. Vous pouvez le télécharger lorsque vous créez Docker, ou vous pouvez copier celui pré-téléchargé.

RUN LIBERTY_URL=https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/wasdev/downloads/wlp/20.0.0.6/wlp-kernel-20.0.0.6.zip

websphere-liberty est 20.0.0.6, mais JRE est fp10.

docker run --rm websphere-liberty

Launching defaultServer (WebSphere Application Server 20.0.0.6/wlp-1.0.41.cl200620200528-0414) on IBM J9 VM, version 8.0.6.10 - pxa6480sr6fp10-20200408_01(SR6 FP10) (en_US)
[AUDIT   ] CWWKE0001I: The server defaultServer has been launched.
~

Impressions

En regardant le contenu de alpine-minirootfs-3.9.3-x86_64.tar.gz, il semble que busybox soit incroyable. C'est un substitut à quelques commandes.

busybox --help
BusyBox v1.29.3 (2019-01-24 07:45:07 UTC) multi-call binary.
BusyBox is copyrighted by many authors between 1998-2015.
Licensed under GPLv2. See source distribution for detailed
copyright notices.

Usage: busybox [function [arguments]...]
   or: busybox --list[-full]
   or: busybox --install [-s] [DIR]
   or: function [arguments]...

        BusyBox is a multi-call binary that combines many common Unix
        utilities into a single executable.  Most people will create a
        link to busybox for each function they wish to use and BusyBox
        will act like whatever it was invoked as.

Currently defined functions:
        [, [[, acpid, add-shell, addgroup, adduser, adjtimex, arch, arp, arping, ash, awk, base64, basename,
        bbconfig, beep, blkdiscard, blkid, blockdev, brctl, bunzip2, bzcat, bzip2, cal, cat, chgrp, chmod,
        chown, chpasswd, chroot, chvt, cksum, clear, cmp, comm, conspy, cp, cpio, crond, crontab, cryptpw, cut,
        date, dc, dd, deallocvt, delgroup, deluser, depmod, df, diff, dirname, dmesg, dnsdomainname, dos2unix,
        du, dumpkmap, dumpleases, echo, ed, egrep, eject, env, ether-wake, expand, expr, factor, fallocate,
        false, fatattr, fbset, fbsplash, fdflush, fdformat, fdisk, fgrep, find, findfs, flock, fold, free,
        fsck, fstrim, fsync, fuser, getopt, getty, grep, groups, gunzip, gzip, halt, hd, hdparm, head, hexdump,
        hostid, hostname, hwclock, id, ifconfig, ifdown, ifenslave, ifup, init, inotifyd, insmod, install,
        ionice, iostat, ip, ipaddr, ipcalc, ipcrm, ipcs, iplink, ipneigh, iproute, iprule, iptunnel, kbd_mode,
        kill, killall, killall5, klogd, less, link, linux32, linux64, ln, loadfont, loadkmap, logger, login,
        logread, losetup, ls, lsmod, lsof, lspci, lsusb, lzcat, lzma, lzop, lzopcat, makemime, md5sum, mdev,
        mesg, microcom, mkdir, mkdosfs, mkfifo, mkfs.vfat, mknod, mkpasswd, mkswap, mktemp, modinfo, modprobe,
        more, mount, mountpoint, mpstat, mv, nameif, nanddump, nandwrite, nbd-client, nc, netstat, nice, nl,
        nmeter, nohup, nologin, nproc, nsenter, nslookup, ntpd, od, openvt, partprobe, passwd, paste, patch,
        pgrep, pidof, ping, ping6, pipe_progress, pkill, pmap, poweroff, powertop, printenv, printf, ps, pscan,
        pstree, pwd, pwdx, raidautorun, rdate, rdev, readahead, readlink, readprofile, realpath, reboot,
        reformime, remove-shell, renice, reset, resize, rev, rfkill, rm, rmdir, rmmod, route, run-parts, sed,
        sendmail, seq, setconsole, setfont, setkeycodes, setlogcons, setpriv, setserial, setsid, sh, sha1sum,
        sha256sum, sha3sum, sha512sum, showkey, shred, shuf, slattach, sleep, smemcap, sort, split, stat,
        strings, stty, su, sum, swapoff, swapon, switch_root, sync, sysctl, syslogd, tac, tail, tar, tee, test,
        time, timeout, top, touch, tr, traceroute, traceroute6, true, truncate, tty, ttysize, tunctl, udhcpc,
        udhcpc6, umount, uname, unexpand, uniq, unix2dos, unlink, unlzma, unlzop, unshare, unxz, unzip, uptime,
        usleep, uudecode, uuencode, vconfig, vi, vlock, volname, watch, watchdog, wc, wget, which, whoami,
        whois, xargs, xxd, xzcat, yes, zcat

BusyBox 1.29.3 est inclus dans alpine-minirootfs-3.9.3-x86_64.tar.gz. BusyBox 1.30.1 a été publié, mais même si vous regardez alpine-minirootfs-3.9.4-x86_64.tar.gz, BusyBox est toujours 1.29.3 (^^; alpine-minirootfs-3.10.0-x86_64) .tar.gz a été mis à jour vers BusyBox 1.30.1.

prime

minirootfs aports C'est facile à faire avec scripts / genrootfs.sh. Après avoir créé busybox-1.30.1 sous main / busybox, essayez de l'utiliser.

./genrootfs.sh -o test-x86_64.tar.gz busybox-1.30.1-r1.apk \
    ssl_client-1.30.1-r1.apk \
    alpine-baselayout alpine-keys apk-tools libc-utils

À partir du 26/08, alpine: dernier Dockerfile était comme suit.

FROM scratch
ADD alpine-minirootfs-3.10.2-x86_64.tar.gz /
CMD ["/bin/sh"]

Lien de référence

How_to_make_a_custom_ISO_image_with_mkimage Créer un package pour Alpine Linux

Les sites que je souhaite vérifier sont les suivants. · IBM JRE https://public.dhe.ibm.com/ibmdl/export/pub/systems/cloud/runtimes/java/meta/jre/linux/x86_64/index.yml ・ Liberté https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/wasdev/downloads/wlp/index.yml

Liberty sortira Il se trouve dans Mises à jour recommandées pour WebSphere Application Server, mais ce n'est qu'un plan, donc c'est souvent plus rapide.

modifier l'historique

(2019/6/22) Rootfs est passé de 3.9.3 à 3.10.0, Liberty est passé à 19.0.0_06 (2019/6/27) keytool donne l'erreur suivante, alors ajoutez le changement de nom d'hôte Impossible de créer le certificat SSL par défaut. erreur keytool (peut-être en anglais): java.lang.RuntimeException: java.io.IOException: IPAddressName 992fdba70de5 non valide (2019/7/11) Changement de jre en 1.8.0_sr5fp37. Copie supprimée de server.xml et ear. Suppression de la partie paramètre du nom d'hôte. (2019/7/24) Gestion des versions non trouvées dans index.yml Ajouter. 19.0.0.7 etc. (2019/8 / 1x?) [Index.yml] https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/wasdev/downloads/wlp/index.yml) a été mis à jour. J'ai donc changé la base Liberty en 19.0.0.7. (2019/8/21) JRE mis à niveau vers 1.8.0_sr5fp40 et Liberty mis à niveau vers 19.0.0.8. (2019/8/26) Changement de la version de linux alpin à 3.10.2. Changement de la version d'ALPINE_GLIBC en 2.30. (2019/9/15) Liberty mis à niveau vers 19.0.0.9. (2019/9/29) Ajout d'environ 8.0.5.41 de jre. (2019/10/11) Liberty 19.0.0.10 a été publié. index.yaml a également été mis à jour. (2019/10/22) Correction de la partie qui ne pouvait pas être mise à jour vers Liberty-19.0.0.10. (2019/10/23) Mise à jour des rootfs d'Alpine vers la version 3.10.3. (2019/11/13) Liberty est mis à niveau vers 19.0.0.11. (2020/3/6) Liberty est mis à niveau vers 20.0.0.2, rootfs d'Alpine est mis à niveau vers 3.11.3, et jre est mis à niveau vers 8.0.6.5. (2020/3/24) Liberty est mis à niveau vers 20.0.0.3 et rootfs d'Alpine est mis à niveau vers 3.11.5. (2020/4/12) Liberty mis à niveau vers 20.0.0.4 et jre mis à niveau vers 8.0.6.7 Cependant, Liberty n'est pas encore dans index.yml. (2020/4/15) Liberty-20.0.0.4 a été ajouté à index.yml, donc il a été corrigé. Spécification de la version Liberty fixe. (2020/5/8) Liberty est mis à niveau vers 20.0.0.5 et jre est mis à niveau vers 8.0.6.10. Fixé. Spécification de la version Liberty fixe. (2020/5/23) Alpline linux a été mis à niveau vers la version 3.11.6 et le statut de websphere-liberty a été mis à jour. (2020/6/12) Alpline linux mis à niveau vers 3.12.0 et Liberty mis à niveau vers 20.0.0.6. (2020/6/27) Mise à niveau de jre vers 8.0.6.11. (2020/7/8) Liberty est mis à niveau vers 20.0.0.7.

Recommended Posts

Liberty sur Docker
Redmine sur Docker
Installation de Docker sur CentOS 6
mémo python sur docker
Installez Docker sur Manjaro
Installez Docker sur Raspberry Pi
Installez Docker sur Windows 10 PRO
Activer HTTPS sur WebSphere Liberty
Installez Docker sur Ubuntu Server 20.04
Exécutez openvpn sur Docker (Windows)
Essayez Docker sur Windows 10 Famille
Oracle Java 8 sur Docker Ubuntu
Hébergé Apicurio Studio sur Docker
Installer docker sur AWS EC2
docker
Installez openjdk8 sur l'image Docker (Debian)
Exécutez l'exemple SSE (Server-Sent-Event) sur le docker
Étapes pour exécuter Docker sur Mac
Exécutez puppeteer-core sur Heroku (édition Docker)
Essayez Redmine sur le docker Mac
Utiliser Docker Compose sur Windows 10 Famille
Exécutez l'AWS CLI sur Docker
Pour exécuter JavaFX sur Docker
WordPress avec Docker Compose sur CentOS 8
Construire Clang x VSCode sur Docker (1)
Déployer l'image Docker de Flask sur Heroku
Rails sur la procédure de construction de l'environnement Docker
Exécuter PureScript sur un conteneur Docker
Essayez Docker sur Windows Home (septembre 2020)
Déployer des rails sur Docker vers heroku
Utilisation de Docker avec Windows10 Home WSL2
Utiliser Docker CE (officiel) avec CentOS 8
Créer un environnement de développement Unity sur docker
Essayez facilement C # 9 (.NET 5) sur Docker
mémo docker
Windows Docker: pression du disque sur le fichier WSL
Publier l'image Docker dans le registre de packages GitHub
Installez docker et docker-compose sur Alpine Linux
printemps × docker
À propos de Docker
Lancer un conteneur docker sur EC2 (mémorandum personnel)
Personnaliser l'image Docker OpenFOAM v8 sur Mac
Exécutez NordVPN dans le conteneur Ubuntu Docker (Windows)
Docker Intellij
Principes de base de Docker
Utiliser docker dans un environnement proxy sur ubuntu 20.04.1