Hi all-
I spent some more candle light hours working on docker today. Here is some more docker code. The way i run it is like this: docker build -t myimage43 . docker run -d -p 41063:80 -v /src:/src -v /src/modules:/src/modules -v /.libs:/usr/lib/php/20220829 -v /jdk:/jdk myimage43 docker run -it --entrypoint /bin/bash myimage43 I'll keep tweaking it. It is further along. I fixed ant a little and I am currently working on supervisord. I comment out sections sometimes, so they dont run too often, and I can focus on just the section I need to work on. THANKS, jim Please see below: # Use Debian as base image FROM debian:bookworm-slim # Set environment variables ENV DEBIAN_FRONTEND noninteractive # Install necessary packages RUN apt-get update && apt-get install -y --no-install-recommends \ wget \ git \ ca-certificates \ unzip \ net-tools \ supervisor \ nano \ php-dev \ autoconf \ automake \ libtool \ vim \ gcc \ make \ less \ curl \ php-json \ php-xml \ php-mbstring \ software-properties-common \ apt-transport-https \ gpg \ nodejs \ npm \ && rm -rf /var/lib/apt/lists/* # Define the environment variable for Apache Royale ENV ROYALE_VERSION=0.9.10 ENV ROYALE_HOME=/opt/apache-royale # Set environment variables for the XAMPP version ENV XAMPP_VERSION=8.2.12 ENV XAMPP_TAR_FILE=xampp-linux-x64-8.2.12-0-installer.run ENV XAMPP_DOWNLOAD_URL=https://sourceforge.net/projects/xampp/files/XAMPP%20Linux/8.2.12/xampp-linux-x64-8.2.12-0-installer.run/download # Download the XAMPP installer RUN wget ${XAMPP_DOWNLOAD_URL} -O /tmp/xampp-installer.run && \ chmod +x /tmp/xampp-installer.run && \ /tmp/xampp-installer.run --mode text && \ rm /tmp/xampp-installer.run # Download and install Apache Royale RUN mkdir -p ${ROYALE_HOME} && \ wget https://downloads.apache.org/royale/${ROYALE_VERSION}/apache-royale-${ROYALE_VERSION}-src.tar.gz -O /tmp/royale.tar.gz && \ tar -xvzf /tmp/royale.tar.gz -C ${ROYALE_HOME} && \ rm /tmp/royale.tar.gz # Clone the OpenJDK repository RUN git clone --branch jdk-22+36 --single-branch --depth 1 https://github.com/openjdk/jdk.git WORKDIR /jdk # Set the environment variable for Apache Royale commands ENV PATH="${ROYALE_HOME}/apache-royale-${ROYALE_VERSION}/bin:${PATH}" # Copy a custom Apache configuration file if you have one # COPY my_apache_config.conf /etc/apache2/sites-available/000-default.conf # Create necessary directories RUN mkdir -p /src /src/modules /usr/lib/php/20220829 # Set the working directory WORKDIR /src # RUN mkdir -p /src/jdk-22.0.1 # COPY /jdk-22.0.1 /src/jdk-22.0.1 # Set the working directory # ./jdk-22.0.1 # Copy PHP extension source code into the Docker image COPY . . # Run phpize and build the PHP extension RUN phpize \ && ./configure --prefix=/usr/lib/php/20220829 && make && make install # Set up Supervisor (assuming you have a supervisord.conf) RUN mkdir -p /var/log/supervisor COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf ENTRYPOINT ["/usr/bin/supervisord", "-n", "-c", "/etc/supervisor/conf.d/supervisord.conf"] # Create non-root user and group for Supervisor RUN groupadd -r supervisor && useradd -r -g supervisor supervisor RUN mkdir -p /.libs \ && chown -R supervisor:supervisor /.libs \ && chmod -R 777 /.libs WORKDIR /var/run # Ensure supervisor.sock exists and set permissions RUN test -f /var/run/supervisor.sock || (rm -f /var/run/supervisor.sock && touch /var/run/supervisor.sock && chown supervisor:supervisor /var/run/supervisor.sock && chmod 666 /var/run/supervisor.sock) RUN unlink /var/run/supervisor.sock # Set permissions for /var/run directory RUN chmod 777 /var/run # Switch to non-root user USER root # Set log permissions only if supervisord.log exists RUN chown -R supervisor:supervisor /var/log \ && chmod 777 /var/log RUN test -f /var/log/supervisord.log && chmod 666 /var/log/supervisord.log || : # Set working directory for XAMPP (assuming this is where your application runs) WORKDIR /xampp # Define volumes and expose ports VOLUME /src /src/modules /usr/lib/php/20220829 /.libs /jdk /usr/local/bin EXPOSE 3306 EXPOSE 80 EXPOSE 443 CMD ["bash", "-c", "service mysql start && apachectl -D FOREGROUND"] # Set the working directory WORKDIR ${ROYALE_HOME}/apache-royale-${ROYALE_VERSION} # Default command to execute Apache Royale commands (you can change this according to your needs) # CMD ["bash"]... # Set environment variables for XAMPP ENV PATH="/opt/lampp/bin:${PATH}" # Example to add custom PHP configuration # COPY php.ini /opt/lampp/etc/php.ini COPY my-startup-script.sh /usr/local/bin/my-startup-script.sh RUN chmod +x /usr/local/bin/my-startup-script.sh # Add the Visual Studio Code repository RUN wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > /usr/share/keyrings/microsoft-archive-keyring.gpg \ && wget -qO- https://packages.microsoft.com/repos/vscode/dist/stable/main/binary-amd64/Packages | tee /etc/apt/sources.list.d/vscode.list # Download and install Visual Studio Code # RUN curl -L "https://go.microsoft.com/fwlink/?LinkID=760868" -o code_amd64.deb \ # && apt-get update \ # && apt-get install -y ./code_amd64.deb \ # && apt-get clean \ # && rm -rf /var/lib/apt/lists/* \ # && rm -f code_amd64.deb # Download Apache Ant and extract it RUN wget https://downloads.apache.org/ant/binaries/apache-ant-1.10.14-bin.tar.gz -O /tmp/apache-ant-1.10.14-bin.tar.gz RUN mkdir -p /opt/ant && \ tar -xvzf /tmp/apache-ant-1.10.14-bin.tar.gz -C /opt/ant && \ export ANT_HOME=/opt/ant && \ export PATH=$ANT_HOME\bin:$PATH && \ mv /tmp/apache-ant-1.10.14-bin.tar.gz /opt/ant && \ ln -s /opt/ant/bin/ant /usr/bin/ant USER root WORKDIR ./ # surprise for those that don't do bash you only get 1 CMD per docker file # Conditional creation of /usr/local/bin if /usr/local exists RUN if [ ! -d /usr/local ]; then mkdir -p /usr/local; fi RUN if [ -d /usr/local ]; then mkdir -p /usr/local/bin; fi RUN chown -R supervisor:supervisor /usr/local/bin/ && \ chmod 755 /usr/local/bin COPY my-startup-script.sh /usr/local/bin/my-startup-script.sh RUN chmod +x /usr/local/bin/my-startup-script.sh RUN chown -R supervisor:supervisor /usr/local/bin/my-startup-script.sh && \ chmod 755 /usr/local/bin/my-startup-script.sh RUN if [ ! -f /usr/local/bin/my-startup-script.sh ]; then echo "file does not exist"; fi RUN [ -f /usr/local/bin/my-startup-script.sh ] && [ -x /usr/local/bin/my-startup-script.sh ] && /usr/local/bin/my-startup-script.sh || echo "Script not found or not executable" WORKDIR /usr/local/bin # Create necessary directories and set permissions RUN mkdir -p /usr/local/bin && \ chmod 755 /usr/local/bin # Copy the startup script into the container COPY my-startup-script.sh /usr/local/bin/my-startup-script.sh # Ensure the script is executable and set ownership RUN chmod +x /usr/local/bin/my-startup-script.sh && \ chown root:root /usr/local/bin/my-startup-script.sh # Copy the supervisor configuration file COPY supervisord.conf /etc/supervisor/supervisord.conf # Set the default command to run supervisord CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/supervisord.conf"] Sent with Proton Mail secure email.