From 2974b0f4c76a07a0762881c5c1e7ee2e1d4ec750 Mon Sep 17 00:00:00 2001
From: OCram85
Date: Wed, 12 Jul 2023 10:22:59 +0200
Subject: [PATCH] use entrypoint logic
---
Dockerfile | 27 +++++++++++------------
README.md | 60 +++++++++++++++++++++++++++++++--------------------
entrypoint.sh | 7 +++---
3 files changed, 54 insertions(+), 40 deletions(-)
diff --git a/Dockerfile b/Dockerfile
index a64b136..01acd65 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,6 +1,6 @@
FROM alpine:3.18.2
-#LABEL build_version=""
+# Set labels manually, each build service differs in used or predefined labels.
LABEL maintainer="OCram85"
ARG VERSION
LABEL build_version="${VERSION}"
@@ -17,8 +17,7 @@ LABEL org.opencontainers.image.url="https://gitea.ocram85.com/OCram85/swarmproxy
LABEL org.opencontainers.image.source="https://gitea.ocram85.com/OCram85/swarmproxy.git"
LABEL org.opencontainers.image.documentation="https://gitea.ocram85.com/OCram85/swarmproxy"
-# Use a custom UID/GID instead of the default system UID which has a greater possibility
-# for collisions with the host and other containers.
+# Use a individual user and group ip for files and process
ENV TINYPROXY_UID 5123
ENV TINYPROXY_GID 5123
@@ -28,24 +27,24 @@ ENV PORT "8888"
ENV TIMEOUT "600"
ENV LOGLEVEL "Info"
ENV MAXCLIENTS "600"
-ENV FILTER_FILE "/etc/tinyproxy/filter"
+ENV FILTER_FILE "/app/filter"
-# Curl is for healthchecks.
+
+# get existing packages
+# curl for healthchecks and debugging
RUN apk add --no-cache \
tinyproxy curl
-RUN mv /etc/tinyproxy/tinyproxy.conf /etc/tinyproxy/tinyproxy.default.conf && \
- touch /etc/tinyproxy/tinyproxy.conf
+COPY entrypoint.sh /app/entrypoint.sh
-COPY entrypoint.sh /swarmproxy/entrypoint.sh
-WORKDIR /swarmproxy
-
-RUN chown -R ${TINYPROXY_UID}:${TINYPROXY_GID} /etc/tinyproxy /var/log/tinyproxy /swarmproxy && \
- chmod +x /swarmproxy/entrypoint.sh
+RUN touch /app/proxy.conf && \
+ chmod +x /app/entrypoint.sh && \
+ chown -R ${TINYPROXY_UID}:${TINYPROXY_GID} /app /etc/tinyproxy /var/log/tinyproxy
USER ${TINYPROXY_UID}:${TINYPROXY_GID}
+WORKDIR /app
EXPOSE 8888
-ENTRYPOINT ["/swarmproxy/entrypoint.sh"]
-CMD ["-d"]
+ENTRYPOINT ["/app/entrypoint.sh"]
+CMD ["-c", "/app/proxy.conf", "-d"]
diff --git a/README.md b/README.md
index c047b20..029bed5 100644
--- a/README.md
+++ b/README.md
@@ -13,7 +13,7 @@
- swarmproxy
+ Swarmproxy - Tame your traffic
@@ -26,10 +26,9 @@
### 1. ⚡ Get the image 📦
-You can download the image from the gitea embedded container registry: `gitea.ocram85.com/ocram85/swarmproxy` with these tags:
+You can download the image from the Gitea embedded container registry: `gitea.ocram85.com/ocram85/swarmproxy` with these tags:
-- `latest` - Is based on the lasted master branch commit.
-- `next` - Is a test build based on the pull request
+- `latest`, `main` - Is based on the lasted master branch commit.
- `1`, `0.1`, `0.1.0` - tag based version.
> **💡 NOTE: See the [packages page](https://gitea.ocram85.com/OCram85/-/packages/container/swarmproxy/latest) for latest version and all other available tags.**
@@ -39,43 +38,58 @@ You can download the image from the gitea embedded container registry: `gitea.oc
```yaml
version: "3.8"
-secrets:
- upstream-proxy:
- external: true
+networks:
+ egress:
+ attachable: true
+ #external: true
+
+#configs:
+# filter_file:
+# # config can be predefined / external or loaded from file
+# #external: true
+# file: ./filter.txt
+
+#secrets:
+# upstream-proxy:
+# external: true
services:
swarmproxy:
image: gitea.ocram85.com/OCram85/swarmproxy:latest
+ deploy:
+ replicas: 1
+ #secrets:
+ # - upstream-proxy
environment:
- # mandatory environment variables
- - UPSTREAM_PROXY=
+ # Recommended settings
+ # Use an optional upstream proxy
+ #- UPSTREAM_PROXY=
# Set UPSTREAM_PROXY as docker secret if your upstream needs authentication
# Eg.: http://user:password@upstream.intra:3128
#- UPSTREAM_PROXY_FILE=/run/secrets/UPSTREAM_PROXY
- # optional settings
+ # OPTIONAL config keys
#- TINYPROXY_UID=5123
#- TINYPROXY_GID=5123
#- PORT=8888
#- TIMEOUT=600
#- LOGLEVEL=Info
#- MAXCLIENTS=600
- #- FILTER_FILE=/ety/tinyproxy/filter
- deploy:
- replicas: 1
+ #- FILTER_FILE=/app/filter
volumes:
- # mount a single file into the container if you need the modify it afterwards
- # You can reload the file with `kill -s USR1 $(pidof tinyproxy)`
- - ./filter.txt:/etc/tinyproxy/filter:ro
- # Use a docker config or volume in production
- -
+ # You can mount a single filter file into the container.
+ # To reload the file use the docker kill -s USR1 command.
+ - ./filter.txt:/app/filter:ro
+ configs:
+ - source: filter_file
+ target: /app/filter
networks:
- - egress
+ egress:
+ aliases:
+ - swarmproxy
+ - proxy
+
-networks:
- egress:
- attachable: true
- #external: true
```
## 😡 We're Using GitHub Under Protest
diff --git a/entrypoint.sh b/entrypoint.sh
index d1bc4ad..41a2f88 100644
--- a/entrypoint.sh
+++ b/entrypoint.sh
@@ -2,7 +2,7 @@
set -e
-CONFIG="/etc/tinyproxy/tinyproxy.conf"
+CONFIG="/app/proxy.conf"
function writeConfig() {
cat << EOF >> "$CONFIG"
@@ -17,7 +17,7 @@ StatFile "/usr/share/tinyproxy/stats.html"
LogLevel $LOGLEVEL
MaxClients $MAXCLIENTS
-ViaProxyName "tinyproxy"
+ViaProxyName "Swarmproxy"
Allow 127.0.0.1/8
Allow 10.0.0.0/8
@@ -51,7 +51,7 @@ function showConfig() {
function execTinyproxy() {
echo "🦁 Starting Tinyproxy..."
echo "args count: $#"
- echo "args: $@"
+ echo "args value: $@"
exec "/usr/bin/tinyproxy" "$@"
}
@@ -64,3 +64,4 @@ function main() {
}
main $@
+echo "entrypoint end. 🚀"