From 37d61e6f3075b5ec8720f4596f3aeae6f63016bd Mon Sep 17 00:00:00 2001 From: crusader Date: Tue, 14 Nov 2017 01:50:37 +0900 Subject: [PATCH] ing --- .gitignore | 68 ++++++++++++++++++++++++++++++++ .vscode/launch.json | 32 +++++++++++++++ .vscode/settings.json | 3 ++ Dockerfile | 36 +++++++++++++++++ _docker/bin/docker-entrypoint.sh | 7 ++++ _docker/config/config.json | 67 +++++++++++++++++++++++++++++++ _docker/config/logging.json | 27 +++++++++++++ build.sh | 4 ++ config.json | 67 +++++++++++++++++++++++++++++++ docker-compose.yml | 33 ++++++++++++++++ main.go | 5 +++ 11 files changed, 349 insertions(+) create mode 100644 .gitignore create mode 100644 .vscode/launch.json create mode 100644 .vscode/settings.json create mode 100644 Dockerfile create mode 100644 _docker/bin/docker-entrypoint.sh create mode 100644 _docker/config/config.json create mode 100644 _docker/config/logging.json create mode 100644 build.sh create mode 100644 config.json create mode 100644 docker-compose.yml create mode 100644 main.go diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3733e36 --- /dev/null +++ b/.gitignore @@ -0,0 +1,68 @@ +# Created by .ignore support plugin (hsz.mobi) +### JetBrains template +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff: +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/dictionaries + +# Sensitive or high-churn files: +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.xml +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml + +# Gradle: +.idea/**/gradle.xml +.idea/**/libraries + +# Mongo Explorer plugin: +.idea/**/mongoSettings.xml + +## File-based project format: +*.iws + +## Plugin-specific files: + +# IntelliJ +/out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties +### Go template +# Binaries for programs and plugins +*.exe +*.dll +*.so +*.dylib + +# Test binary, build with `go test -c` +*.test + +# Output of the go coverage tool, specifically when used with LiteIDE +*.out + +# Project-local glide cache, RE: https://github.com/Masterminds/glide/issues/736 +.glide/ +.idea/ +*.iml + +vendor/ +glide.lock +.DS_Store +dist/ +debug diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..2ca2b1d --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,32 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Debug", + "type": "go", + "request": "launch", + "mode": "debug", + "remotePath": "", + "port": 2345, + "host": "127.0.0.1", + "program": "${workspaceRoot}/main.go", + "env": {}, + "args": [], + "showLog": true + }, + { + "name": "File Debug", + "type": "go", + "request": "launch", + "mode": "debug", + "remotePath": "", + "port": 2345, + "host": "127.0.0.1", + "program": "${fileDirname}", + "env": {}, + "args": [], + "showLog": true + } + + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..20af2f6 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +// Place your settings in this file to overwrite default and user settings. +{ +} \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..94d9019 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,36 @@ +FROM alpine:latest + +ENV APP_VERSION=1.0.0 \ + APP_HOME=/opt \ + APP_NAME=overflow_gateway_webapp + +ENV APP_CONFIG_PATH="${APP_HOME}/config" \ + APP_LOGS_PATH="${APP_HOME}/logs" \ + PATH="$PATH:${APP_HOME}/bin" + +ADD dist/${APP_NAME} ${APP_HOME}/bin/ +ADD _docker/bin/*.sh ${APP_HOME}/bin/ + +RUN apk add --no-cache curl \ + && chmod +x ${APP_HOME}/bin/*.sh \ + && mkdir -p ${APP_LOGS_PATH} + +ENV TINI_VERSION='0.15.0' \ + TINI_SHA='4007655082f573603c02bc1d2137443c8e153af047ffd088d02ccc01e6f06170' + +# Use tini as subreaper in Docker container to adopt zombie processes +RUN curl -fsSL https://github.com/krallin/tini/releases/download/v${TINI_VERSION}/tini-static-amd64 -o /bin/tini \ + && chmod +x /bin/tini \ + && echo "$TINI_SHA /bin/tini" | sha256sum -c - + +VOLUME ${APP_CONFIG_PATH} +VOLUME ${APP_LOGS_PATH} + +EXPOSE 80 443 + +ENTRYPOINT ["/bin/tini", "--"] +CMD ["docker-entrypoint.sh"] + + +# docker build -f Dockerfile -t docker.loafle.net/overflow/overflow_service_websocket:1.0.0-alpine . +# docker run -d -p 18081:80 -t docker.loafle.net/overflow/overflow_service_websocket:1.0.0-alpine diff --git a/_docker/bin/docker-entrypoint.sh b/_docker/bin/docker-entrypoint.sh new file mode 100644 index 0000000..cbbd7f7 --- /dev/null +++ b/_docker/bin/docker-entrypoint.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +set -e + +/opt/bin/overflow_gateway_app -config=/opt/config/ + +exec "$@" \ No newline at end of file diff --git a/_docker/config/config.json b/_docker/config/config.json new file mode 100644 index 0000000..5efe20c --- /dev/null +++ b/_docker/config/config.json @@ -0,0 +1,67 @@ +{ + "server": { + "name": "Gateway APP", + "network": "tcp4", + "addr": ":80", + "tls": false, + "concurrency": 262144, + "maxStopWaitTime": 0 + }, + "auth": { + "signingKey": "tWB0lUXiCwX4U3qsJZcZ10mKvEH793RHkTJDbDuZVshQTk4uNB6ck59UQ96lhsRi4XNUiEnlIbP8XYQMPabeNtERX3iyHeDcwocgUVAor1nkAajYeq1gNyJszGpMhEOT" + }, + "websocket": { + "handshakeTimeout": 0, + "readBufferSize": 8192, + "writeBufferSize": 8192, + "enableCompression": false + }, + "gRPC": { + "addr": "192.168.1.50:50006", + "tls": false, + "pool": { + "maxIdle": 1, + "maxCapacity": 3, + "idleTimeout": 240, + "wait": false + } + }, + "redis": { + "network": "tcp", + "addr": "192.168.1.50:6379", + "tls": false, + "pool": { + "maxIdle": 1, + "maxCapacity": 3, + "idleTimeout": 240, + "wait": false + } + }, + "handlers": { + "web": { + "entry": "/web", + "socket": { + "maxMessageSize": 8192, + "writeTimeout": 0, + "readTimeout": 0, + "pongTimeout": 60, + "pingTimeout": 10, + "pingPeriod": 10, + "binaryMessage": false + } + }, + "file": { + "entry": "/file", + "socket": { + "maxMessageSize": 8192, + "writeTimeout": 0, + "readTimeout": 0, + "pongTimeout": 60, + "pingTimeout": 10, + "pingPeriod": 10, + "binaryMessage": false + } + } + + } +} diff --git a/_docker/config/logging.json b/_docker/config/logging.json new file mode 100644 index 0000000..f4ed6b8 --- /dev/null +++ b/_docker/config/logging.json @@ -0,0 +1,27 @@ +{ + "level": "debug", + "development": true, + "disableCaller": true, + "disableStacktrace": true, + "sampling": { + "initial": 100, + "thereafter": 100 + }, + "encoding": "console", + "encoderConfig": { + "messageKey": "message", + "levelKey": "level", + "timeKey": "time", + "nameKey": "name", + "callerKey": "caller", + "stacktraceKey": "stacktrace", + "lineEnding": "\n", + "levelEncoder": "color", + "timeEncoder": "ISO8601", + "durationEncoder": "string", + "callerEncoder": "full", + "nameEncoder": "full" + }, + "outputPaths": ["/opt/logs/log"], + "errorOutputPaths": ["stderr"] +} diff --git a/build.sh b/build.sh new file mode 100644 index 0000000..205d583 --- /dev/null +++ b/build.sh @@ -0,0 +1,4 @@ +rm ./dist/* +CGO_ENABLED=0 go build -a --installsuffix cgo --ldflags="-s" -o ./dist/overflow_gateway_webapp + +docker build -f Dockerfile -t docker.loafle.net/overflow/overflow_gateway_webapp:1.0.0-alpine . \ No newline at end of file diff --git a/config.json b/config.json new file mode 100644 index 0000000..d558ea0 --- /dev/null +++ b/config.json @@ -0,0 +1,67 @@ +{ + "server": { + "name": "Gateway Web APP", + "network": "tcp4", + "addr": ":19090", + "tls": false, + "concurrency": 262144, + "maxStopWaitTime": 0 + }, + "auth": { + "signingKey": "tWB0lUXiCwX4U3qsJZcZ10mKvEH793RHkTJDbDuZVshQTk4uNB6ck59UQ96lhsRi4XNUiEnlIbP8XYQMPabeNtERX3iyHeDcwocgUVAor1nkAajYeq1gNyJszGpMhEOT" + }, + "websocket": { + "handshakeTimeout": 0, + "readBufferSize": 8192, + "writeBufferSize": 8192, + "enableCompression": false + }, + "gRPC": { + "addr": "127.0.0.1:50006", + "tls": false, + "pool": { + "maxIdle": 1, + "maxCapacity": 3, + "idleTimeout": 240, + "wait": false + } + }, + "redis": { + "network": "tcp", + "addr": "192.168.1.50:6379", + "tls": false, + "pool": { + "maxIdle": 1, + "maxCapacity": 3, + "idleTimeout": 240, + "wait": false + } + }, + "handlers": { + "web": { + "entry": "/web", + "socket": { + "maxMessageSize": 8192, + "writeTimeout": 0, + "readTimeout": 0, + "pongTimeout": 60, + "pingTimeout": 10, + "pingPeriod": 10, + "binaryMessage": false + } + }, + "file": { + "entry": "/file", + "socket": { + "maxMessageSize": 8192, + "writeTimeout": 0, + "readTimeout": 0, + "pongTimeout": 60, + "pingTimeout": 10, + "pingPeriod": 10, + "binaryMessage": false + } + } + + } +} diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..9aaff3e --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,33 @@ +version: "3" + +services: + overflow_gateway_web: + restart: always + image: docker.loafle.net/overflow/overflow_gateway_app:1.0.0-alpine + container_name: overflow_gateway_app + volumes: + - /service/overflow_gateway_app/data/opt/config:/opt/config + - /service/overflow_gateway_app/data/opt/logs:/opt/logs + # - /home/crusader/Temp/docker/overflow_gateway_app/config:/opt/config + # - /home/crusader/Temp/docker/overflow_gateway_app/logs:/opt/logs + ports: + - "19090:80" + - "19443:443" + +# postgresql: +# restart: always +# image: postgres:9.6-alpine +# container_name: overFlow-dao-postgres +# environment: +# - POSTGRES_DB=overflow +# - POSTGRES_USER=overflow +# - POSTGRES_PASSWORD=qwer5795 +# # - POSTGRES_INITDB_ARGS="--data-checksums" +# ports: +# - "5432:5432" + +# docker-compose up -d +# docker-compose stop +# docker-compose rm +# or +# docker-compose -f ./docker-compose.yml up -d \ No newline at end of file diff --git a/main.go b/main.go new file mode 100644 index 0000000..7905807 --- /dev/null +++ b/main.go @@ -0,0 +1,5 @@ +package main + +func main() { + +}