Docker install of PAS 12.1 fails with segmentation fault - Forum - OpenEdge General - Progress Community

Docker install of PAS 12.1 fails with segmentation fault

 Forum

Docker install of PAS 12.1 fails with segmentation fault

This question is not answered

Hi!

I'm trying to create a Docker image with a PAS 12.1 install.

For Java I use AdoptOpenJDK 8u222-b10.

When running proinst I always get an segmentation fault immediatly after running proinst. However, I'm not able to find any meaningful log files.

No matter what image i use (the "FROM") I always get the same. I tried Centos, Ubuntu, adoptopenjdk/openjdk8 to no avail. Did anyone come across this?

thanks

All Replies
  • Is JAVA in your PATH? Or missing serials? (I do assume you already checked these by the way :))

  • Shouldn't you know the answer Surprise?

  • For 12.1 there is already an official docker PASOE image. You can make use of the deploy scripts to perform sidecar deployment from here

    Optionally, take a look at the Dockerfile to extend from PASOE base image, if you want to do so.

  • Hi Ravi, I'm aware of the existence of the official Docker image. However, since the Dockerfile for that image is not shared, I rather create an image myself (and put that on github.com/.../docker4oe).

    In the mean the I'm still curious if anyone can tell me why I get a segmentation fault.

  • Can you post your DockerFile here? TIP: avoid posting licensing info if there is any in the file.

  • Hi Bronco,

    Could you please share with us the response.ini and the install log file.

    Kind Regards,

    Santosh JAMMI.

  • Dockerfile:

    FROM adoptopenjdk/openjdk8

    LABEL maintainer="Bronco Oostermeyer (dev@bfv.io)"

    RUN \
      mkdir /install && \
      mkdir /install/openedge
      
    # ADD OpenJDK8U-jdk_x64_linux_hotspot_8u242b08.tar.gz /opt/java/openjdk/
    ENV PATH=$PATH:/opt/java/openjdk/bin

    ADD PROGRESS_OE_12.1_LNX_64.tar.gz /install/openedge

    # you need a response.ini from a previous install
    COPY response.ini /install/openedge/response.ini
    ENV TERM xterm

    RUN /install/openedge/proinst -b /install/openedge/response.ini -l /install/install_oe.log 

    RUN rm -rf /install/openedge && \
      rm -f /usr/dlc/progress.cfg

    RUN groupadd -g 1000 pasadmin && \
        useradd -r -u 1000 -g pasadmin pasadmin

    ENV DLC=/usr/dlc
    ENV WRKDIR=/usr/wrk
    ENV PATH=$DLC:$DLC/bin:$PATH

    # create directories and files as root
    RUN \
      mkdir /app/ && \
      mkdir /app/pas/ && \
      mkdir /app/license/

    COPY start.sh /app/pas
    COPY dummy.log /app/pas

    # turn them over to user pasadmin
    RUN chown -R pasadmin:pasadmin /app/
    RUN chmod +x /app/pas/start.sh

    ENV PROCFG=/app/license/progress.cfg

    USER pasadmin

    VOLUME /app/license
  • response.ini:

    ;
    ; DESCRIPTION of Configuration Count
    ;
    ;  NumberofConfigurations - the number of products being installed.
    ;

    [Configuration Count]
    NumberofConfigurations=1

    [Product Configuration 1]
    name=PSC
    serial=
    version=12.1
    control=
    prodname=Progress ProdAS for OE

    ;
    ; DESCRIPTION of Java
    ;
    ;  JavaHome - the root directory where the JRE is installed
    ;

    [Java]
    JavaHome=/opt/java/openjdk

    ;
    ; DESCRIPTION of Type and Destination
    ;
    ;  type - identifies the type of installation. Valid values are COMPLETE and CUSTOM.
    ;  path - identifies the directory in which you install your OpenEdge product software.
    ;  workpath - identifies the directory in which your applications, databases, and log files will reside.
    ;  oem_path - identifies the directory in which you install your Management product software.
    ;  oem_workpath - identifies the directory in which your Management applications, databases, and log files will reside.
    ;

    [Type and Destination]
    type=CUSTOM
    path=/usr/dlc
    workpath=/usr/wrk
    oem_path=/usr/oemgmt
    oem_workpath=/usr/wrk_oemgmt

    ;
    ; DESCRIPTION of Language Default
    ;
    ;  DefaultLanguage - identifies the language in which PROMSGS appears by default.
    ;    -Valid values are:
    ;      Czech
    ;      Dutch
    ;      English - American
    ;      English - International
    ;      French
    ;      German
    ;      Italian
    ;      Polish
    ;      Portuguese
    ;      Portuguese - Brazilian
    ;      Spanish
    ;      Spanish - Latin
    ;      Swedish
    ;

    [Language Default]
    DefaultLanguage=English - American

    ;
    ; DESCRIPTION of Language Choice
    ;
    ;  lang1, lang2, lang3 ... - Identifies all the PROMSGS languages installed during installation including the default language.
    ;

    [Language Choice]
    lang1=English - American

    ;
    ; DESCRIPTION of International Settings
    ;
    ;   NOTE: For specific information please refer to the intlsets.txt file located at the root level of the cdrom from which this information is derived.
    ;   cpinternal - identifies the -cpinternal and -cpstream values included in the startup.pf file.
    ;   cpcollation - identifies the -cpcoll value included in the startup.pf file.
    ;   cpcase - identifies the -cpcase value included in the startup.pf file.
    ;   dateformat - identifies the -d value included in the startup.pf file.
    ;   numsep - identifies the -numsep value included in the startup.pf file.
    ;   numdec - identifies the -numdec value included in the startup.pf file.
    ;
    ;   The following is a table of the numbers and the separators they represent:
    ;   32  - space
    ;   36  - dollar
    ;   39  - apostrophe
    ;   44  - comma
    ;   46  - period
    ;

    [International Settings]
    cpinternal=UTF-8
    cpcollation=Basic
    cpcase=Basic
    dateformat=dmy
    numsep=46
    numdec=44
    ;
    ; DESCRIPTION of PacificAppServerPortDetails
    ;
    ;  nPortHttp - A port for HTTP connections.
    ;  nPortHttps - A port for HTTPS connections.
    ;  nPortShutdown - Port on which the shutdown process will run.
    ;

    [PacificAppServerPortDetails]
    nPortHttp=8810
    nPortHttps=8811
    nPortShutdown=8812
  • start.sh:

    #!/bin/bash

    logfile=/app/pas/as/logs/as-pas.agent.log
    touch $logfile

    /app/pas/as/bin/tcman.sh start -v

    tail -f $logfile
  • FROM should be Centos:7.3 or later.

    Since you also need JDK, you need to use multi stage build. https://docs.docker.com/develop/develop-images/multistage-build/

    An example of it is there in extending PASOE documentation at https://docs.progress.com/bundle/pas-for-openedge-docker/page/Deploy-using-the-standalone-Docker-image.html

    FROM <JDK Docker image name>:<JDK Docker image tag> as builder-jdk

    FROM store/progresssoftware/pasoe:12.1.0

    USER pscadmin

    COPY --chown=pscadmin:pscadmin <Path of the license file> /psc/dlc/progress.cfg

    COPY --from=builder-jdk --chown=pscadmin:pscadmin <Java location inside the JDK Docker image> /usr/java

    ...

  • Thank you Ravi. I still feel that the install (proinst) shouldn't fail as it currently does:

    Step 7/20 : RUN /install/openedge/proinst -b /install/openedge/response.ini -l /install/install_oe.log

    ---> Running in 6dfe2cc424af

    /install/openedge/proinst: line 102:    24 Segmentation fault      $mountdir/_ovrly $mountdir $option1 $option2 $option3 $option4 $option5

    Cleaning up temporary files...

    The command '/bin/sh -c /install/openedge/proinst -b /install/openedge/response.ini -l /install/install_oe.log' returned a non-zero code: 139

    This after creating a Centos/OpenJDK image first and build from there on....

  • Is your issue resolved or are you still facing the Segmentation fault? If the issue still exists, could you share the install_oe.log ?

  • See earlier mentioned Dockerfile, I commented the RUN /..../proinst and everything beneath. I build and start the image and run proinst from a bash shell from the command line.

    CLI:

    [root@7f21a2425825 /]# /install/openedge/proinst -b /install/openedge/response.ini -l /install/install_oe.log
    /install/openedge/proinst: line 102: 33 Segmentation fault $mountdir/_ovrly $mountdir $option1 $option2 $option3 $option4 $option5
    Cleaning up temporary files...

     

    /install/install_oe.log:

    OPENEDGE INSTALL UTILITY LOG <VERSION 12.1> (Tue Feb 11 08:01:34 2020)
    [Application]
    Name=OpenEdge
    Version=12.1
    Company=PSC

    [ResponseResult]
    ResultCode=
    ResultDescription=


    [DetectPreviousInstallSettings]
    Information=[02-11-2020 08:01:34] Unable to locate file /etc/progress.
    OPENEDGE INSTALL UTILITY LOG <VERSION 12.1> (Tue Feb 11 08:01:34 2020)
    The JavaHome path provided: /opt/java/openjdk

  • Hi Bronco,

    At the mentioned place, where the error is thrown:

    $mountdir/_ovrly $mountdir $option1 $option2 $option3 $option4 $option5

    The mountdir is the directory where you have launched the installer from. It executes the _ovrly file that temporarily gets copied to the PWD which is the main file to launch the installer.

    I would request you to set ulimit -c unlimited so when a segmentation fault occurs, a core is dumped. You can send us the core file so that we can see the problem.

    Kind Regards,

    Santosh JAMMI.

  • Hello Santosh,

    Here's the link to the core dump: 1drv.ms/.../s!AusuzFLH7JWPh9QLYijZx10FX7JDNQ