Hi -

This is a mockup intended to be eventually used with Apache Royale, XAMPP, and 
PhP-AMF3 extension. I am only a beginner at docker.

# 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 \
    unzip \
    openjdk-11-jdk \
    net-tools \
    supervisor \
    nano \
    php-dev \
    autoconf \
    automake \
    libtool \
    vim \
    gcc \
    make \
    less \
    curl \
    json \
    xml \
    mbstring \
    && rm -rf /var/lib/apt/lists/*

# Define the environment variable for Apache Royale
ENV ROYALE_VERSION=1.0.0
ENV ROYALE_HOME=/opt/apache-royale
# Set environment variables for the XAMPP version
ENV XAMPP_VERSION=8.1.14
ENV XAMPP_TAR_FILE=xampp-linux-x64-${XAMPP_VERSION}-0-installer.run
ENV 
XAMPP_DOWNLOAD_URL=https://www.apachefriends.org/xampp-files/${XAMPP_VERSION}/${XAMPP_TAR_FILE}

# 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 silent && \
    rm /tmp/xampp-installer.run


# Download and install Apache Royale
RUN mkdir -p ${ROYALE_HOME} && \
    wget 
https://downloads.apache.org/royale/royale-${ROYALE_VERSION}/apache-royale-${ROYALE_VERSION}-src.tar.gz
 -O /tmp/royale.tar.gz && \
    tar -xvzf /tmp/royale.tar.gz -d ${ROYALE_HOME} && \
    rm /tmp/royale.tar.gz

# 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

# 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
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

CMD ["/usr/local/bin/my-startup-script.sh"]
# in the my-startup-script.sh
# e.g. commands
/opt/lamp/lamp -c start


# below is how to run the funny system
#docker build -t my-xampp-image .
#docker run -d -p 80:80 -p 443:443 -p 3306:3306 --name my-xampp-container 
my-xampp-image


thanks Maria, Pioytr, Josh, and Yishay!
jim


Sent with Proton Mail secure email.

Reply via email to