diff --git a/.github/workflows/BuildImage.yml b/.github/workflows/BuildImage.yml new file mode 100644 index 0000000..04a2887 --- /dev/null +++ b/.github/workflows/BuildImage.yml @@ -0,0 +1,62 @@ +name: Build Image + +on: [push, pull_request, workflow_dispatch] + +env: + ENDPOINT: "linuxserver/mods" #don't modify + BASEIMAGE: "swag" #replace + MODNAME: "geoip2influx" #replace + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2.3.3 + + - name: Build image + run: | + docker build --no-cache -t ${{ github.sha }} . + + - name: Tag image + if: ${{ github.ref == format('refs/heads/{0}-{1}', env.BASEIMAGE, env.MODNAME) }} + run: | + docker tag ${{ github.sha }} ${ENDPOINT}:${BASEIMAGE}-${MODNAME} + docker tag ${{ github.sha }} ${ENDPOINT}:${BASEIMAGE}-${MODNAME}-${{ github.sha }} + docker tag ${{ github.sha }} ghcr.io/${ENDPOINT}:${BASEIMAGE}-${MODNAME} + docker tag ${{ github.sha }} ghcr.io/${ENDPOINT}:${BASEIMAGE}-${MODNAME}-${{ github.sha }} + + - name: Credential check + if: ${{ github.ref == format('refs/heads/{0}-{1}', env.BASEIMAGE, env.MODNAME) }} + run: | + echo "CR_USER=${{ secrets.CR_USER }}" >> $GITHUB_ENV + echo "CR_PAT=${{ secrets.CR_PAT }}" >> $GITHUB_ENV + echo "DOCKERUSER=${{ secrets.DOCKERUSER }}" >> $GITHUB_ENV + echo "DOCKERPASS=${{ secrets.DOCKERPASS }}" >> $GITHUB_ENV + if [[ "${{ secrets.CR_USER }}" == "" && "${{ secrets.CR_PAT }}" == "" && "${{ secrets.DOCKERUSER }}" == "" && "${{ secrets.DOCKERPASS }}" == "" ]]; then + echo "::error::Push credential secrets missing." + echo "::error::You must set either CR_USER & CR_PAT or DOCKERUSER & DOCKERPASS as secrets in your repo settings." + echo "::error::See https://github.com/linuxserver/docker-mods/blob/master/README.md for more information/instructions." + exit 1 + fi + + - name: Login to GitHub Container Registry + if: ${{ github.ref == format('refs/heads/{0}-{1}', env.BASEIMAGE, env.MODNAME) && env.CR_USER && env.CR_PAT }} + run: | + echo "${{ secrets.CR_PAT }}" | docker login ghcr.io -u ${{ secrets.CR_USER }} --password-stdin + + - name: Push tags to GitHub Container Registry + if: ${{ github.ref == format('refs/heads/{0}-{1}', env.BASEIMAGE, env.MODNAME) && env.CR_USER && env.CR_PAT }} + run: | + docker push ghcr.io/${ENDPOINT}:${BASEIMAGE}-${MODNAME}-${{ github.sha }} + docker push ghcr.io/${ENDPOINT}:${BASEIMAGE}-${MODNAME} + + - name: Login to DockerHub + if: ${{ github.ref == format('refs/heads/{0}-{1}', env.BASEIMAGE, env.MODNAME) && env.DOCKERUSER && env.DOCKERPASS }} + run: | + echo ${{ secrets.DOCKERPASS }} | docker login -u ${{ secrets.DOCKERUSER }} --password-stdin + + - name: Push tags to DockerHub + if: ${{ github.ref == format('refs/heads/{0}-{1}', env.BASEIMAGE, env.MODNAME) && env.DOCKERUSER && env.DOCKERPASS }} + run: | + docker push ${ENDPOINT}:${BASEIMAGE}-${MODNAME}-${{ github.sha }} + docker push ${ENDPOINT}:${BASEIMAGE}-${MODNAME} diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 1566faf..0000000 --- a/.travis.yml +++ /dev/null @@ -1,35 +0,0 @@ -os: linux - -language: shell - -branches: - only: - - swag-geoip2influx - -services: - - docker - -env: - global: - - DOCKERHUB="linuxserver/mods" - - BASEIMAGE="swag" - - MODNAME="geoip2influx" - -jobs: - include: - - stage: PR-BuildImage - if: (type IN (pull_request)) - script: - # Build image - - docker build --no-cache -t ${DOCKERHUB}:${BASEIMAGE}-${MODNAME}-${TRAVIS_COMMIT} . - - stage: BuildImage - if: (NOT (type IN (pull_request))) - script: - # Build image - - docker build --no-cache -t ${DOCKERHUB}:${BASEIMAGE}-${MODNAME}-${TRAVIS_COMMIT} . - - docker tag ${DOCKERHUB}:${BASEIMAGE}-${MODNAME}-${TRAVIS_COMMIT} ${DOCKERHUB}:${BASEIMAGE}-${MODNAME} - # Login to DockerHub - - echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin - # Push all of the tags - - docker push ${DOCKERHUB}:${BASEIMAGE}-${MODNAME}-${TRAVIS_COMMIT} - - docker push ${DOCKERHUB}:${BASEIMAGE}-${MODNAME} \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 4ad8796..e878919 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,12 +1,6 @@ -FROM lsiobase/nginx:3.12 as buildstage - -RUN \ - apk add --no-cache \ - git && \ - mkdir -p /root-layer/geoip2influx && \ - git clone https://github.com/gilbN/geoip2influx.git /root-layer/geoip2influx - +FROM lsiobase/alpine:3.12 as buildstage +ADD https://raw.githubusercontent.com/gilbN/geoip2influx/master/geoip2influx.py /root-layer/geoip2influx/geoip2influx.py COPY root/ /root-layer/ # runtime stage diff --git a/README.md b/README.md index 68004d6..2000f10 100644 --- a/README.md +++ b/README.md @@ -53,23 +53,21 @@ The InfluxDB database will be created automatically with the name you choose. ## Sending Nginx log metrics -1. Add the following to the http block in your `nginx.conf`file: +1. Uncomment the Geoip2 config in `nginx.conf` + +2. Add the following to the http block in your `nginx.conf`file: ```nginx -geoip2 /config/geoip2db/GeoLite2-City.mmdb { -auto_reload 5m; -$geoip2_data_country_code country iso_code; -$geoip2_data_city_name city names en; -} - log_format geoip2influx '$remote_addr - $remote_user [$time_local]' '"$request" $status $body_bytes_sent' '"$http_referer" $host "$http_user_agent"' '"$request_time" "$upstream_connect_time"' - '"$geoip2_data_city_name" "$geoip2_data_country_code"'; + '"$geoip2_data_city_name" "$geoip2_data_country_iso_code"'; ``` - 2. Set the access log use the `geoip2influx` log format. + 3. Set the access log use the `geoip2influx` log format. + + Note: The log_format block must be above the access_log context. ```nginx access_log /config/log/nginx/access.log geoip2influx; ``` @@ -88,4 +86,4 @@ As nginx can have multiple `access log` directives in a block, just add another ``` This will log the same lines to both files. -Then use the `/config/log/nginx/access.log` file in the `NGINX_LOG_PATH` variable. \ No newline at end of file +Then use the `/config/log/nginx/access.log` file in the `NGINX_LOG_PATH` variable. diff --git a/root/etc/cont-init.d/69-geoip2influx b/root/etc/cont-init.d/98-geoip2influx similarity index 96% rename from root/etc/cont-init.d/69-geoip2influx rename to root/etc/cont-init.d/98-geoip2influx index 5e101d1..66f619b 100644 --- a/root/etc/cont-init.d/69-geoip2influx +++ b/root/etc/cont-init.d/98-geoip2influx @@ -14,7 +14,7 @@ fi # Create log folder mkdir -p \ - /config/log/geoip2influx + /config/log/geoip2influx # move old log if needed if [ -f /config/geoip2db/geoip2influx.log ]; then mv /config/geoip2db/geoip2influx.log /config/log/geoip2influx @@ -22,7 +22,7 @@ fi # permissions chown -R abc:abc \ - /geoip2influx \ + /geoip2influx \ /config/log/geoip2influx chmod +x /geoip2influx/geoip2influx.py