diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 5fd3fb2be..7134c69fa 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -66,7 +66,7 @@ }, // Use 'forwardPorts' to make a list of ports inside the container available locally. - "forwardPorts": [3000, 5432, 5433, 8000, 8001], + "forwardPorts": [3000, 5432, 5433, 8000], "portsAttributes": { "3000": { @@ -82,12 +82,12 @@ "onAutoForward": "silent" }, "8000": { - "label": "Datatracker", + "label": "NGINX", "onAutoForward": "notify" }, "8001": { - "label": "Static", - "onAutoForward": "silent" + "label": "Datatracker", + "onAutoForward": "ignore" } }, diff --git a/.devcontainer/docker-compose.extend.yml b/.devcontainer/docker-compose.extend.yml index b9b5a2764..1673e4e61 100644 --- a/.devcontainer/docker-compose.extend.yml +++ b/.devcontainer/docker-compose.extend.yml @@ -18,5 +18,8 @@ services: pgadmin: network_mode: service:db + static: + network_mode: service:db + volumes: datatracker-vscode-ext: diff --git a/.vscode/launch.json b/.vscode/launch.json index 8dfc1b9b7..227eb8f61 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -12,7 +12,7 @@ "program": "${workspaceFolder}/ietf/manage.py", "args": [ "runserver", - "0.0.0.0:8000", + "0.0.0.0:8001", "--settings=settings_local" ], "django": true, @@ -30,7 +30,7 @@ "program": "${workspaceFolder}/ietf/manage.py", "args": [ "runserver", - "0.0.0.0:8000", + "0.0.0.0:8001", "--settings=settings_local_vite" ], "django": true, @@ -48,7 +48,7 @@ "program": "${workspaceFolder}/ietf/manage.py", "args": [ "runserver", - "0.0.0.0:8000", + "0.0.0.0:8001", "--settings=settings_local_debug" ], "django": true, diff --git a/docker-compose.yml b/docker-compose.yml index 434ec8f46..b177ee67e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -62,8 +62,6 @@ services: static: image: ghcr.io/ietf-tools/static:latest restart: unless-stopped - ports: - - 8001:80 mq: image: rabbitmq:3-alpine diff --git a/docker/app.Dockerfile b/docker/app.Dockerfile index af475a4e6..5ff03a5c9 100644 --- a/docker/app.Dockerfile +++ b/docker/app.Dockerfile @@ -30,6 +30,13 @@ COPY docker/scripts/app-setup-python.sh /tmp/library-scripts/docker-setup-python RUN sed -i 's/\r$//' /tmp/library-scripts/docker-setup-python.sh && chmod +x /tmp/library-scripts/docker-setup-python.sh RUN bash /tmp/library-scripts/docker-setup-python.sh "none" "/usr/local" "${PIPX_HOME}" "${USERNAME}" +# Setup nginx +COPY docker/scripts/app-setup-nginx.sh /tmp/library-scripts/docker-setup-nginx.sh +RUN sed -i 's/\r$//' /tmp/library-scripts/docker-setup-nginx.sh && chmod +x /tmp/library-scripts/docker-setup-nginx.sh +RUN bash /tmp/library-scripts/docker-setup-nginx.sh +COPY docker/configs/nginx-proxy.conf /etc/nginx/sites-available/default +COPY docker/configs/nginx-502.html /var/www/html/502.html + # Remove library scripts for final image RUN rm -rf /tmp/library-scripts diff --git a/docker/configs/nginx-502.html b/docker/configs/nginx-502.html new file mode 100644 index 000000000..9d85600ec --- /dev/null +++ b/docker/configs/nginx-502.html @@ -0,0 +1,59 @@ + + +
+ + +Is the datatracker server running?
+Using VS Code, open the Run and Debug tab on the left and click the ‣ symbol (Run Server) to start the server.
+Otherwise, run the command ietf/manage.py runserver 0.0.0.0:8001
from the terminal.
For more information, check out the Datatracker Development in Docker guide.
+ + diff --git a/docker/configs/nginx-proxy.conf b/docker/configs/nginx-proxy.conf new file mode 100644 index 000000000..c2c94319a --- /dev/null +++ b/docker/configs/nginx-proxy.conf @@ -0,0 +1,23 @@ +server { + listen 8000 default_server; + listen [::]:8000 default_server; + + root /var/www/html; + index index.html index.htm index.nginx-debian.html; + + server_name _; + + location /_static/ { + proxy_pass http://localhost:80/; + } + + location / { + error_page 502 /502.html; + proxy_pass http://localhost:8001/; + } + + location /502.html { + root /var/www/html; + internal; + } +} diff --git a/docker/configs/settings_local.py b/docker/configs/settings_local.py index 4f0d6a249..4866a6061 100644 --- a/docker/configs/settings_local.py +++ b/docker/configs/settings_local.py @@ -56,4 +56,4 @@ SLIDE_STAGING_PATH = 'test/staging/' DE_GFM_BINARY = '/usr/local/bin/de-gfm' -STATIC_IETF_ORG = "http://localhost:8001" +STATIC_IETF_ORG = "/_static" diff --git a/docker/scripts/app-init.sh b/docker/scripts/app-init.sh index 61d7ef851..8761db39c 100755 --- a/docker/scripts/app-init.sh +++ b/docker/scripts/app-init.sh @@ -21,6 +21,11 @@ sudo chown dev:dev "/assets" echo "Fix chromedriver /dev/shm permissions..." sudo chmod 1777 /dev/shm +# Run nginx + +echo "Starting nginx..." +sudo nginx + # Build node packages that requrie native compilation echo "Compiling native node packages..." yarn rebuild @@ -35,37 +40,27 @@ cp $WORKSPACEDIR/docker/configs/settings_postgresqldb.py $WORKSPACEDIR/ietf/sett if [ ! -f "$WORKSPACEDIR/ietf/settings_local.py" ]; then echo "Setting up a default settings_local.py ..." - cp $WORKSPACEDIR/docker/configs/settings_local.py $WORKSPACEDIR/ietf/settings_local.py - else - echo "Using existing ietf/settings_local.py file" - if ! cmp -s $WORKSPACEDIR/docker/configs/settings_local.py $WORKSPACEDIR/ietf/settings_local.py; then - echo "NOTE: Differences detected compared to docker/configs/settings_local.py!" - echo "We'll assume you made these deliberately." - fi + echo "Renaming existing ietf/settings_local.py to ietf/settings_local.py.bak" + mv -f $WORKSPACEDIR/ietf/settings_local.py $WORKSPACEDIR/ietf/settings_local.py.bak fi +cp $WORKSPACEDIR/docker/configs/settings_local.py $WORKSPACEDIR/ietf/settings_local.py if [ ! -f "$WORKSPACEDIR/ietf/settings_local_debug.py" ]; then echo "Setting up a default settings_local_debug.py ..." - cp $WORKSPACEDIR/docker/configs/settings_local_debug.py $WORKSPACEDIR/ietf/settings_local_debug.py else - echo "Using existing ietf/settings_local_debug.py file" - if ! cmp -s $WORKSPACEDIR/docker/configs/settings_local_debug.py $WORKSPACEDIR/ietf/settings_local_debug.py; then - echo "NOTE: Differences detected compared to docker/configs/settings_local_debug.py!" - echo "We'll assume you made these deliberately." - fi + echo "Renaming existing ietf/settings_local_debug.py to ietf/settings_local_debug.py.bak" + mv -f $WORKSPACEDIR/ietf/settings_local.py $WORKSPACEDIR/ietf/settings_local.py.bak fi +cp $WORKSPACEDIR/docker/configs/settings_local_debug.py $WORKSPACEDIR/ietf/settings_local_debug.py if [ ! -f "$WORKSPACEDIR/ietf/settings_local_vite.py" ]; then echo "Setting up a default settings_local_vite.py ..." - cp $WORKSPACEDIR/docker/configs/settings_local_vite.py $WORKSPACEDIR/ietf/settings_local_vite.py else - echo "Using existing ietf/settings_local_vite.py file" - if ! cmp -s $WORKSPACEDIR/docker/configs/settings_local_vite.py $WORKSPACEDIR/ietf/settings_local_vite.py; then - echo "NOTE: Differences detected compared to docker/configs/settings_local_vite.py!" - echo "We'll assume you made these deliberately." - fi + echo "Renaming existing ietf/settings_local_vite.py to ietf/settings_local_vite.py.bak" + mv -f $WORKSPACEDIR/ietf/settings_local_vite.py $WORKSPACEDIR/ietf/settings_local_vite.py.bak fi +cp $WORKSPACEDIR/docker/configs/settings_local_vite.py $WORKSPACEDIR/ietf/settings_local_vite.py # Create data directories diff --git a/docker/scripts/app-setup-nginx.sh b/docker/scripts/app-setup-nginx.sh new file mode 100644 index 000000000..cdeb2ea4c --- /dev/null +++ b/docker/scripts/app-setup-nginx.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash + +apt-get update -y +apt-get install -y nginx