Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

get-unpriv-nginx-working #36

Open
wants to merge 2 commits into
base: developing/2.0.0
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 28 additions & 5 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,17 +1,40 @@
# syntax = docker/dockerfile:latest

# build stage
FROM node:lts-alpine AS build-stage

# Set environment variables for non-interactive npm installs
ENV NPM_CONFIG_LOGLEVEL warn
ENV CI true

WORKDIR /app

COPY package.json pnpm-lock.yaml ./
RUN npm install -g pnpm && pnpm i --frozen-lockfile

RUN npm install -g pnpm
RUN pnpm i --frozen-lockfile

COPY . .

RUN pnpm build

# production stage
FROM nginx:stable-alpine AS production-stage
COPY --from=build-stage /app/dist /usr/share/nginx/html
COPY nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
FROM nginxinc/nginx-unprivileged:1.25.4-alpine AS production-stage

USER root

ARG UID=101
ARG GID=101

COPY --from=build-stage /app/dist /usr/share/nginx/html/
COPY --link --chmod=755 scripts/nginx/*.sh /docker-entrypoint.d/

RUN chown $UID:0 /usr/share/nginx/html/index.html

# COPY nginx.conf /etc/nginx/conf.d/default.conf
USER $UID

# Document what port is required
EXPOSE 8080

CMD ["nginx", "-g", "daemon off;"]
10 changes: 0 additions & 10 deletions nginx.conf

This file was deleted.

70 changes: 70 additions & 0 deletions scripts/nginx/70-nginx.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
#!/bin/sh

set -eu

PORT="${PORT:-"8080"}"

# Create nginx conf with port variable
tee /etc/nginx/nginx.conf << 'EOF' >/dev/null
worker_processes auto;

error_log /var/log/nginx/error.log notice;
pid /tmp/nginx.pid;

events {
accept_mutex off;
worker_connections 1024;
}

http {
proxy_temp_path /tmp/proxy_temp;
proxy_cache_path /tmp/mycache keys_zone=mycache:50m;
client_body_temp_path /tmp/client_temp;
fastcgi_temp_path /tmp/fastcgi_temp;
uwsgi_temp_path /tmp/uwsgi_temp;
scgi_temp_path /tmp/scgi_temp;

log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

access_log /var/log/nginx/access.log main;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/mime.types;
default_type application/octet-stream;

sendfile_max_chunk 512k;
sendfile on;
tcp_nopush on;
keepalive_timeout 65;
gzip on;

server {
# add proxy caches
listen ${PORT};

root /usr/share/nginx/html;
index index.html;

# Make site accessible from http://localhost/
server_name _;

error_page 404 /index.html;

location /healthz {
return 200;
}
}
}
EOF

# Apply port variable
sed -i s/'${PORT}'/${PORT}/g /etc/nginx/nginx.conf

echo ""
echo "#####################"
echo "Nginx running on port $PORT"
echo "#####################"
echo ""

exec "$@"
Loading