mirror of
https://github.com/elyby/chrly.git
synced 2025-05-31 14:11:51 +05:30
Все Docker штуки опущены в директорию docker.
Production Docker контейнер теперь использует alpine linux вместо пустого scratch В production Docker контейнер добавлен docker-entrypoint.sh, который автоматически создаёт конфиг по умолчанию.
This commit is contained in:
8
.gitignore
vendored
8
.gitignore
vendored
@@ -2,14 +2,14 @@
|
|||||||
/.idea
|
/.idea
|
||||||
|
|
||||||
# Docker Compose file
|
# Docker Compose file
|
||||||
docker-compose.yml
|
/docker-compose.yml
|
||||||
docker-compose.override.yml
|
/docker-compose.override.yml
|
||||||
|
|
||||||
# vendor
|
# vendor
|
||||||
vendor
|
/vendor
|
||||||
|
|
||||||
# Cover output
|
# Cover output
|
||||||
.cover
|
.cover
|
||||||
|
|
||||||
# Local config
|
# Local config
|
||||||
config.yml
|
/config.yml
|
||||||
|
@@ -55,7 +55,7 @@ build docker image:
|
|||||||
<<: *setup_docker_environment
|
<<: *setup_docker_environment
|
||||||
stage: build_docker_image
|
stage: build_docker_image
|
||||||
script:
|
script:
|
||||||
- docker build -t $TEMP_IMAGE_NAME .
|
- docker build -t $TEMP_IMAGE_NAME -f docker/Dockerfile .
|
||||||
only:
|
only:
|
||||||
- tags
|
- tags
|
||||||
- develop
|
- develop
|
||||||
|
@@ -1,6 +0,0 @@
|
|||||||
FROM scratch
|
|
||||||
|
|
||||||
COPY ./minecraft-skinsystem /app/
|
|
||||||
|
|
||||||
ENTRYPOINT ["/app/minecraft-skinsystem"]
|
|
||||||
CMD ["serve"]
|
|
10
README.md
10
README.md
@@ -30,8 +30,8 @@ ENV переменными.
|
|||||||
[docker-compose](https://docs.docker.com/compose/install/).
|
[docker-compose](https://docs.docker.com/compose/install/).
|
||||||
|
|
||||||
Для запуска последней версии проекта достаточно скопировать содержимое файла
|
Для запуска последней версии проекта достаточно скопировать содержимое файла
|
||||||
[docker-compose.prod.yml](docker-compose.prod.yml) в файл `docker-compose.yml` непосредственно на месте
|
[docker/docker-compose.prod.yml](docker/docker-compose.prod.yml) в файл `docker-compose.yml` непосредственно
|
||||||
установки, после чего ввести в консоль команду:
|
на месте установки, после чего ввести в консоль команду:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
docker-compose up -d
|
docker-compose up -d
|
||||||
@@ -63,11 +63,11 @@ dep ensure
|
|||||||
затачиваем его под себя.
|
затачиваем его под себя.
|
||||||
|
|
||||||
Redis можно установить в систему самостоятельно, но гораздо удобнее воспользоваться готовыми сервисами,
|
Redis можно установить в систему самостоятельно, но гораздо удобнее воспользоваться готовыми сервисами,
|
||||||
описанными в [docker-compose.dev.yml](docker-compose.dev.yml). Для этого просто копируем `docker-compose.dev.yml`
|
описанными в [docker/docker-compose.dev.yml](docker/docker-compose.dev.yml). Для этого просто копируем
|
||||||
и поднимаем сервисы:
|
`docker-compose.dev.yml` и поднимаем сервисы:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cp docker-compose.dev.yml docker-compose.yml
|
cp docker/docker-compose.dev.yml docker-compose.yml
|
||||||
docker-compose up -d
|
docker-compose up -d
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@@ -34,7 +34,7 @@ func initConfig() {
|
|||||||
viper.SetConfigFile(cfgFile)
|
viper.SetConfigFile(cfgFile)
|
||||||
} else {
|
} else {
|
||||||
viper.SetConfigName("config")
|
viper.SetConfigName("config")
|
||||||
viper.AddConfigPath("/data")
|
viper.AddConfigPath("/etc/minecraft-skinsystem")
|
||||||
viper.AddConfigPath(".")
|
viper.AddConfigPath(".")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
9
docker/Dockerfile
Normal file
9
docker/Dockerfile
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
FROM alpine:3.6
|
||||||
|
|
||||||
|
COPY docker/docker-entrypoint.sh /usr/local/bin/
|
||||||
|
COPY docker/config.dist.yml /usr/local/etc/minecraft-skinsystem/
|
||||||
|
|
||||||
|
COPY minecraft-skinsystem /usr/local/bin/
|
||||||
|
|
||||||
|
ENTRYPOINT ["docker-entrypoint.sh"]
|
||||||
|
CMD ["serve"]
|
51
docker/config.dist.yml
Normal file
51
docker/config.dist.yml
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
# Main server configuration. Actually you don't want to change it,
|
||||||
|
# but you able to change host or port, that will be used by serve command
|
||||||
|
server:
|
||||||
|
host: # leave host empty to allow Docker publish port
|
||||||
|
port: 80
|
||||||
|
|
||||||
|
# Worker listen to AMQP events, so it should know how to connect to any
|
||||||
|
# AMQP provider (actually RabbitMQ). You should not escape any vhost
|
||||||
|
# characters, 'cause it will be done by application automatically
|
||||||
|
amqp:
|
||||||
|
host: rabbitmq
|
||||||
|
port: 5672
|
||||||
|
username: minecraft-skinsystem-app
|
||||||
|
password: minecraft-skinsystem-app-password
|
||||||
|
vhost: /
|
||||||
|
|
||||||
|
# Both of web or worker depends on storage.
|
||||||
|
storage:
|
||||||
|
# For now app require Redis and don't support any other backends to store
|
||||||
|
# skins, but in the future we can have more backends. Poll size tune amount
|
||||||
|
# of connections to the redis. It's not recommended to set it less then 2
|
||||||
|
# because it will lead to panic on high load.
|
||||||
|
redis:
|
||||||
|
host: redis
|
||||||
|
port: 6379
|
||||||
|
poolSize: 10
|
||||||
|
|
||||||
|
# Filesystem storage used to store capes. basePath specify absolute or relative
|
||||||
|
# path to storage and capesDirName specify which folder in this base path will
|
||||||
|
# be used to search capes.
|
||||||
|
filesystem:
|
||||||
|
basePath: /data
|
||||||
|
capesDirName: capes
|
||||||
|
|
||||||
|
# Accounts Ely.by internal API will be used in cases, when by some reasons
|
||||||
|
# information about user will be unavailable in the app storage.
|
||||||
|
api:
|
||||||
|
accounts:
|
||||||
|
host: https://account.ely.by
|
||||||
|
id: app-id
|
||||||
|
secret: secret
|
||||||
|
scopes:
|
||||||
|
- internal_account_info
|
||||||
|
|
||||||
|
# StatsD can be used to collect metrics
|
||||||
|
# statsd:
|
||||||
|
# addr: localhost:3746
|
||||||
|
|
||||||
|
# Sentry can be used to collect app errors
|
||||||
|
# sentry:
|
||||||
|
# dsn: https://public:private@your.sentry.io/1
|
@@ -3,7 +3,7 @@
|
|||||||
#
|
#
|
||||||
# Usage:
|
# Usage:
|
||||||
# 1. Clone this file as docker-compose.yml:
|
# 1. Clone this file as docker-compose.yml:
|
||||||
# cp docker-compose.dev.yml docker-compose.yml
|
# cp docker/docker-compose.dev.yml docker-compose.yml
|
||||||
#
|
#
|
||||||
# 2. If necessary, then you can fix configuration to your environment.
|
# 2. If necessary, then you can fix configuration to your environment.
|
||||||
# Then start all services:
|
# Then start all services:
|
@@ -9,6 +9,7 @@ services:
|
|||||||
- redis
|
- redis
|
||||||
volumes:
|
volumes:
|
||||||
- ./data/capes:/data/capes
|
- ./data/capes:/data/capes
|
||||||
|
- ./config/minecraft-skinsystem:/etc/minecraft-skinsystem
|
||||||
|
|
||||||
worker:
|
worker:
|
||||||
image: registry.ely.by/elyby/skinsystem:latest
|
image: registry.ely.by/elyby/skinsystem:latest
|
||||||
@@ -28,6 +29,6 @@ services:
|
|||||||
image: rabbitmq:3.6-alpine
|
image: rabbitmq:3.6-alpine
|
||||||
restart: always
|
restart: always
|
||||||
environment:
|
environment:
|
||||||
RABBITMQ_DEFAULT_USER: "ely-skinsystem-app"
|
RABBITMQ_DEFAULT_USER: minecraft-skinsystem-app
|
||||||
RABBITMQ_DEFAULT_PASS: "ely-skinsystem-app-password"
|
RABBITMQ_DEFAULT_PASS: minecraft-skinsystem-app-password
|
||||||
RABBITMQ_DEFAULT_VHOST: "/ely"
|
RABBITMQ_DEFAULT_VHOST: /
|
15
docker/docker-entrypoint.sh
Executable file
15
docker/docker-entrypoint.sh
Executable file
@@ -0,0 +1,15 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
set -e
|
||||||
|
|
||||||
|
CONFIG="/etc/minecraft-skinsystem/config.yml"
|
||||||
|
|
||||||
|
if [ ! -f "$CONFIG" ]; then
|
||||||
|
mkdir -p $(dirname "${CONFIG}")
|
||||||
|
cp /usr/local/etc/minecraft-skinsystem/config.dist.yml "$CONFIG"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$1" = "serve" ] || [ "$1" = "amqp-worker" ]; then
|
||||||
|
set -- minecraft-skinsystem "$@"
|
||||||
|
fi
|
||||||
|
|
||||||
|
exec "$@"
|
Reference in New Issue
Block a user