commit 05cb8b0129793b2f7369d4a21968c683032b5e77 Author: Alexander Kiryukhin Date: Mon Sep 24 14:06:01 2018 +0300 Initial diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..c085427 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,7 @@ +FROM golang:1.11-alpine +RUN apk update && \ + apk upgrade && \ + apk add git +RUN go get -u github.com/gomods/athens/cmd/proxy +COPY ./config.toml . +CMD ["proxy", "-config_file", "config.toml"] \ No newline at end of file diff --git a/config.toml b/config.toml new file mode 100644 index 0000000..f7c8cf1 --- /dev/null +++ b/config.toml @@ -0,0 +1,219 @@ +# GoBinary returns the path to the go binary to use. This value can be a name of a binary in your PATH, or the full path +# Defaults to "go" +# Env override: GO_BINARY_PATH +GoBinary = "go" + +# GoEnv specifies the type of environment to run. +# Supported values are: 'development' and 'production'. Defaults to "development" +# Env override: GO_ENV +GoEnv = "production" + +# GoGetWorkers specifies how many times you can concurrently +# go mod download, this is so that low performance instances +# can manage go get more sanely and not run out of disk or memory. +# Env override: ATHENS_GOGET_WORKERS +GoGetWorkers = 30 + +# ProtocolWorkers specifies how many concurrent +# requests can you handle at a time for all +# download protocol paths. This is different from +# GoGetWorkers in that you can potentially serve +# 30 requests to the Download Protocol but only 5 +# at a time can stash a module from Upstream to Storage. +# Env override: ATHENS_PROTOCOL_WORKERS +ProtocolWorkers = 30 + +# LogLevel returns the system's exposure to internal logs. Defaults to debug. +# Supports all logrus log levels (https://github.com/Sirupsen/logrus#level-logging) +# Env override: ATHENS_LOG_LEVEL +LogLevel = "debug" + +# BuffaloLogLevel returns the log level for logs +# emitted by Buffalo itself. This is different from our own +# LogLevel in this file because you might want info level +# for our codebase, but panic level for buffalo. +# Env override: BUFFALO_LOG_LEVEL +BuffaloLogLevel = "debug" + +# CloudRuntime is the Cloud Provider on which the Proxy/Registry is running. +# Currently available options are "GCP", or "none". Defaults to "none" +# Env override: ATHENS_CLOUD_RUNTIME +CloudRuntime = "none" + +# MaxConcurrency sets maximum level of concurrency +# Defaults to number of cores if not specified. +# Env override: ATHENS_MAX_CONCURRENCY +MaxConcurrency = 4 + +# The maximum number of failures for jobs submitted to buffalo workers +# Defaults to 5. +# Env override: ATHENS_MAX_WORKER_FAILS +MaxWorkerFails = 5 + +# The filename for the include exclude filter. Defaults to 'filter.conf' +# Env override: ATHENS_FILTER_FILE +FilterFile = "filter.conf" + +# Timeout is the timeout for external network calls in seconds +# This value is used as the default for storage backends if they don't specify timeouts +# Defaults to 300 +# Env override: ATHENS_TIMEOUT +Timeout = 300 + +# EnableCSRFProtection determines whether to enable CSRF protection. +# Defaults to false +# Env override: ATHENS_ENABLE_CSRF_PROTECTION +EnableCSRFProtection = false + +[Proxy] + # StorageType sets the type of storage backend the proxy will use. + # Possible values are memory, disk, mongo, gcp, minio + # Defaults to memory + # Env override: ATHENS_STORAGE_TYPE + StorageType = "mongo" + + # Port sets the port the proxy listens on + # Env override: PORT + Port = ":3000" + + # The endpoint for Olympus in case of a proxy cache miss + # Env override: OLYMPUS_GLOBAL_ENDPOINT + OlympusGlobalEndpoint = "http://localhost:3001" + + # Redis queue for buffalo workers + # Defaults to ":6379" + # Env override: ATHENS_REDIS_QUEUE_ADDRESS + RedisQueueAddress = ":6379" + + # Flag to turn off Proxy Filter middleware + # Defaults to true + # Env override: PROXY_FILTER_OFF + FilterOff = true + + # Username for basic auth + # Env override: BASIC_AUTH_USER + BasicAuthUser = "" + + # Password for basic auth + # Env override: BASIC_AUTH_PASS + BasicAuthPass = "" + + # Set to true to force an SSL redirect + # Env override: PROXY_FORCE_SSL + ForceSSL = false + + # ValidatorHook specifies the endpoint to validate modules against + # Not used if left blank or not specified + # Env override: ATHENS_PROXY_VALIDATOR + ValidatorHook = "" + + # PathPrefix specifies whether the Proxy + # should have a basepath. Certain proxies and services + # are distinguished based on subdomain, while others are based + # on path prefixes. + # Env override: ATHENS_PATH_PREFIX + PathPrefix = "" + + # NETRCPath tells you where the .netrc path initially resides. + # This is so that you can mount the .netrc file to a secret location + # in the fs system and then move it ~/.netrc. In certain deployments + # like Kubernetes, we can't mount directly to ~ because it would then + # clean out whatever is already there as part of the image (such as + # .cache directory in the Go image). + # Env override: ATHENS_NETRC_PATH + NETRCPath = "" + + # TraceExporterURL is the URL to which Athens populates distributed tracing + # information such as Jaeger. + # Env override: ATHENS_TRACE_EXPORTER + TraceExporterURL = "" + +[Olympus] + # StorageType sets the type of storage backend Olympus will use. + # Possible values are memory, disk, mongo, postgres, sqlite, cockroach, mysql + # Defaults to memory + # Env override: ATHENS_STORAGE_TYPE + StorageType = "disk" + + # Port sets the port olympus listens on + # Env override: PORT + Port = ":3001" + # Background worker type. Possible values are memory and redis + # Defaults to redis + # Env override: OLYMPUS_BACKGROUND_WORKER_TYPE + WorkerType = "redis" + + # Redis queue for buffalo workers + # Defaults to ":6379" + # Env override: OLYMPUS_REDIS_QUEUE_ADDRESS + RedisQueueAddress = ":6379" + +[Storage] + # Only storage backends that are specified in Proxy.StorageType or Olympus.StorageType are required here + [Storage.CDN] + # Endpoint for CDN storage + # Env override: CDN_ENDPOINT + Endpoint = "cdn.example.com" + + # Timeout for networks calls made to the CDN in seconds + # Defaults to Global Timeout + Timeout = 300 + + [Storage.Disk] + # RootPath is the Athens Disk Root folder + # Env override: ATHENS_DISK_STORAGE_ROOT + RootPath = "/var/go" + + [Storage.GCP] + # ProjectID to use for GCP Storage + # Env overide: GOOGLE_CLOUD_PROJECT + ProjectID = "MY_GCP_PROJECT_ID" + + # Bucket to use for GCP Storage + # Env override: ATHENS_STORAGE_GCP_BUCKET + Bucket = "MY_GCP_BUCKET" + + # Timeout for networks calls made to GCP in seconds + # Defaults to Global Timeout + Timeout = 300 + + [Storage.Minio] + # Endpoint for Minio storage + # Env override: ATHENS_MINIO_ENDPOINT + Endpoint = "127.0.0.1:9001" + + # Access Key for Minio storage + # Env override: ATHENS_MINIO_ACCESS_KEY_ID + Key = "minio" + + # Secret Key for Minio storage + # Env override: ATHENS_MINIO_SECRET_ACCESS_KEY + Secret = "minio123" + + # Timeout for networks calls made to Minio in seconds + # Defaults to Global Timeout + Timeout = 300 + + # Enable SSL for Minio connections + # Defaults to true + # Env override: ATHENS_MINIO_USE_SSL + EnableSSL = false + + # Minio Bucket to use for storage + # Defaults to gomods + # Env override: ATHENS_MINIO_BUCKET_NAME + Bucket = "gomods" + + [Storage.Mongo] + # Full URL for mongo storage + # Env override: ATHENS_MONGO_STORAGE_URL + URL = "mongodb://mongo:27017" + + # Path to certificate to use for the mongo connection + # Env override: ATHENS_MONGO_CERT_PATH + CertPath = "" + + # Timeout for networks calls made to Mongo in seconds + # Defaults to Global Timeout + # Env override: MONGO_CONN_TIMEOUT_SEC + Timeout = 300 \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..d1c41ac --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,15 @@ +version: "3.3" +services: + proxy: + build: . + ports: + - "3000:3000" + deploy: + replicas: 1 + configs: + - proxy_config + mongo: + image: mongo:3.7.9-jessie +configs: + proxy_config: + file: ./config.toml