open-range / src /open_range /builder /templates /Dockerfile.web.j2
Aaron Brown
Remove hardcoded fallbacks, add snapshot-driven service lifecycle
7fedc25
FROM ubuntu:22.04
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y --no-install-recommends \
nginx \
php8.1-fpm \
php8.1-mysql \
php8.1-ldap \
php8.1-xml \
php8.1-mbstring \
openssh-server \
curl \
&& rm -rf /var/lib/apt/lists/*
# Configure SSH
RUN mkdir /var/run/sshd && \
echo 'PermitRootLogin no' >> /etc/ssh/sshd_config && \
echo 'PasswordAuthentication yes' >> /etc/ssh/sshd_config
# Create app users
{% for user in users %}
RUN useradd -m -s /bin/bash {{ user.username | shell_quote }} && \
echo {{ (user.username ~ ':' ~ user.password) | shell_quote }} | chpasswd
{% endfor %}
# Copy nginx config
COPY nginx.conf /etc/nginx/sites-available/default
# Set up web root
RUN mkdir -p /var/www/portal/admin /var/www/portal/api /var/www/portal/reports
# Create flag files (if any are on this host)
{% for flag in flags %}
{% if flag.host == 'web' and '/' in flag.path %}
RUN mkdir -p $(dirname {{ flag.path | shell_quote }}) && \
echo {{ flag.value | shell_quote }} > {{ flag.path | shell_quote }}
{% endif %}
{% endfor %}
# Logging
RUN mkdir -p /var/log/app && \
ln -sf /var/log/app/access.log /var/log/nginx/access.log && \
ln -sf /var/log/app/error.log /var/log/nginx/error.log
EXPOSE 80 443 22
CMD service ssh start && \
service php8.1-fpm start && \
nginx -g 'daemon off;'