docker-test #1
13 changed files with 174 additions and 0 deletions
12
.dockerignore
Normal file
12
.dockerignore
Normal file
|
@ -0,0 +1,12 @@
|
|||
.git
|
||||
assets
|
||||
postgres
|
||||
**/target
|
||||
.gitignore
|
||||
docker-compose.yml
|
||||
Dockerfile-builder
|
||||
Dockerfile-service
|
||||
LICENSE
|
||||
*.md
|
||||
*.zip
|
||||
*.png
|
6
Dockerfile-builder
Normal file
6
Dockerfile-builder
Normal file
|
@ -0,0 +1,6 @@
|
|||
FROM rust:1.81-alpine3.20
|
||||
|
||||
WORKDIR /app
|
||||
COPY . .
|
||||
# No need to manually strip symbols(strip target/release/$MICROSERVICE) since workspace its already prepared for that
|
||||
RUN apk add musl-dev protoc && cargo build --release
|
6
Dockerfile-service
Normal file
6
Dockerfile-service
Normal file
|
@ -0,0 +1,6 @@
|
|||
FROM alpine:3.20 as release
|
||||
ARG MICROSERVICE
|
||||
|
||||
WORKDIR /app
|
||||
COPY --from=shorekeeper-builder:1.3.0-SNAPSHOT /app/target/release/$MICROSERVICE ./service
|
||||
CMD ["./service"]
|
6
assets/docker/configserver.toml
Normal file
6
assets/docker/configserver.toml
Normal file
|
@ -0,0 +1,6 @@
|
|||
[network]
|
||||
http_addr = "0.0.0.0:10001"
|
||||
|
||||
[encryption]
|
||||
key = "t+AEu5SGdpz06tomonajLMau9AJgmyTvVhz9VtGf1+0="
|
||||
iv = "fprc5lBWADQB7tim0R2JxQ=="
|
13
assets/docker/gameserver.toml
Normal file
13
assets/docker/gameserver.toml
Normal file
|
@ -0,0 +1,13 @@
|
|||
service_id = 2
|
||||
|
||||
[database]
|
||||
host = "shorekeeper-postgres:5432"
|
||||
user_name = "shorekeeper_user"
|
||||
password = "shorekeeper_pass"
|
||||
db_name = "shorekeeper_db"
|
||||
|
||||
[service_end_point]
|
||||
addr = "tcp://0.0.0.0:10004"
|
||||
|
||||
[gateway_end_point]
|
||||
addr = "tcp://shorekeeper-gateway-server:10003"
|
20
assets/docker/gateway.toml
Normal file
20
assets/docker/gateway.toml
Normal file
|
@ -0,0 +1,20 @@
|
|||
service_id = 1
|
||||
|
||||
[network]
|
||||
kcp_port = 7777
|
||||
|
||||
[protokey]
|
||||
builtin_encryption_msg_id = [111, 112]
|
||||
use_client_key = true
|
||||
|
||||
[service_end_point]
|
||||
addr = "tcp://0.0.0.0:10003"
|
||||
|
||||
[game_server_end_point]
|
||||
addr = "tcp://shorekeeper-game-server:10004"
|
||||
|
||||
[database]
|
||||
host = "shorekeeper-postgres:5432"
|
||||
user_name = "shorekeeper_user"
|
||||
password = "shorekeeper_pass"
|
||||
db_name = "shorekeeper_db"
|
6
assets/docker/hotpatch.toml
Normal file
6
assets/docker/hotpatch.toml
Normal file
|
@ -0,0 +1,6 @@
|
|||
[network]
|
||||
http_addr = "0.0.0.0:10002"
|
||||
|
||||
[encryption]
|
||||
key = "t+AEu5SGdpz06tomonajLMau9AJgmyTvVhz9VtGf1+0="
|
||||
iv = "fprc5lBWADQB7tim0R2JxQ=="
|
12
assets/docker/loginserver.toml
Normal file
12
assets/docker/loginserver.toml
Normal file
|
@ -0,0 +1,12 @@
|
|||
[network]
|
||||
http_addr = "0.0.0.0:5500"
|
||||
|
||||
[gateway]
|
||||
host = "shorekeeper-gateway-server"
|
||||
port = 7777
|
||||
|
||||
[database]
|
||||
host = "shorekeeper-postgres:5432"
|
||||
user_name = "shorekeeper_user"
|
||||
password = "shorekeeper_pass"
|
||||
db_name = "shorekeeper_db"
|
3
assets/docker/postgres/scripts/0_INIT.sql
Normal file
3
assets/docker/postgres/scripts/0_INIT.sql
Normal file
|
@ -0,0 +1,3 @@
|
|||
CREATE DATABASE shorekeeper_db;
|
||||
CREATE USER shorekeeper_user WITH encrypted password 'shorekeeper_pass';
|
||||
GRANT ALL PRIVILEGES ON DATABASE shorekeeper_db to shorekeeper_user;
|
2
assets/docker/postgres/scripts/1_PERMS.sql
Normal file
2
assets/docker/postgres/scripts/1_PERMS.sql
Normal file
|
@ -0,0 +1,2 @@
|
|||
\c shorekeeper_db;
|
||||
GRANT ALL ON SCHEMA public TO shorekeeper_user;
|
9
builder.bat
Normal file
9
builder.bat
Normal file
|
@ -0,0 +1,9 @@
|
|||
docker build -t shorekeeper-builder:1.3.0-SNAPSHOT -f Dockerfile-builder .
|
||||
|
||||
docker build -t shorekeeper-config-server:1.3.0-SNAPSHOT --build-arg MICROSERVICE=config-server -f Dockerfile-service .
|
||||
docker build -t shorekeeper-hotpatch-server:1.3.0-SNAPSHOT --build-arg MICROSERVICE=hotpatch-server -f Dockerfile-service .
|
||||
docker build -t shorekeeper-login-server:1.3.0-SNAPSHOT --build-arg MICROSERVICE=login-server -f Dockerfile-service .
|
||||
docker build -t shorekeeper-gateway-server:1.3.0-SNAPSHOT --build-arg MICROSERVICE=gateway-server -f Dockerfile-service .
|
||||
docker build -t shorekeeper-game-server:1.3.0-SNAPSHOT --build-arg MICROSERVICE=game-server -f Dockerfile-service .
|
||||
|
||||
docker rmi shorekeeper-builder:1.3.0-SNAPSHOT
|
9
builder.sh
Normal file
9
builder.sh
Normal file
|
@ -0,0 +1,9 @@
|
|||
docker build -t shorekeeper-builder:1.3.0-SNAPSHOT -f Dockerfile-builder .
|
||||
|
||||
docker build -t shorekeeper-config-server:1.3.0-SNAPSHOT --build-arg MICROSERVICE=config-server -f Dockerfile-service .
|
||||
docker build -t shorekeeper-hotpatch-server:1.3.0-SNAPSHOT --build-arg MICROSERVICE=hotpatch-server -f Dockerfile-service .
|
||||
docker build -t shorekeeper-login-server:1.3.0-SNAPSHOT --build-arg MICROSERVICE=login-server -f Dockerfile-service .
|
||||
docker build -t shorekeeper-gateway-server:1.3.0-SNAPSHOT --build-arg MICROSERVICE=gateway-server -f Dockerfile-service .
|
||||
docker build -t shorekeeper-game-server:1.3.0-SNAPSHOT --build-arg MICROSERVICE=game-server -f Dockerfile-service .
|
||||
|
||||
docker rmi shorekeeper-builder:1.3.0-SNAPSHOT
|
70
docker-compose.yml
Normal file
70
docker-compose.yml
Normal file
|
@ -0,0 +1,70 @@
|
|||
name: shorekeeper-ps
|
||||
|
||||
services:
|
||||
shorekeeper-config-server:
|
||||
image: shorekeeper-config-server:1.3.0-SNAPSHOT
|
||||
depends_on:
|
||||
shorekeeper-postgres:
|
||||
condition: service_healthy
|
||||
ports:
|
||||
- '10001:10001'
|
||||
volumes:
|
||||
- "./assets/docker/configserver.toml:/app/configserver.toml"
|
||||
- "./assets/config:/app/assets/config"
|
||||
shorekeeper-hotpatch-server:
|
||||
image: shorekeeper-hotpatch-server:1.3.0-SNAPSHOT
|
||||
depends_on:
|
||||
shorekeeper-postgres:
|
||||
condition: service_healthy
|
||||
ports:
|
||||
- '10002:10002'
|
||||
volumes:
|
||||
- "./assets/docker/hotpatch.toml:/app/hotpatch.toml"
|
||||
- "./assets/hotpatch:/app/assets/hotpatch"
|
||||
shorekeeper-login-server:
|
||||
image: shorekeeper-login-server:1.3.0-SNAPSHOT
|
||||
depends_on:
|
||||
shorekeeper-postgres:
|
||||
condition: service_healthy
|
||||
ports:
|
||||
- '5500:5500'
|
||||
volumes:
|
||||
- "./assets/docker/loginserver.toml:/app/loginserver.toml"
|
||||
shorekeeper-gateway-server:
|
||||
image: shorekeeper-gateway-server:1.3.0-SNAPSHOT
|
||||
depends_on:
|
||||
shorekeeper-postgres:
|
||||
condition: service_healthy
|
||||
ports:
|
||||
# Uncomment this if you want to have manual access
|
||||
# - '10003:10003'
|
||||
- '7777:7777/udp'
|
||||
volumes:
|
||||
- "./assets/docker/gateway.toml:/app/gateway.toml"
|
||||
shorekeeper-game-server:
|
||||
image: shorekeeper-game-server:1.3.0-SNAPSHOT
|
||||
depends_on:
|
||||
shorekeeper-postgres:
|
||||
condition: service_healthy
|
||||
# Uncomment this if you want to have manual access
|
||||
# ports:
|
||||
# - '10004:10004'
|
||||
volumes:
|
||||
- "./assets/docker/gameserver.toml:/app/gameserver.toml"
|
||||
- "./assets/logic:/app/assets/logic"
|
||||
shorekeeper-postgres:
|
||||
image: postgres:16.4-alpine3.20
|
||||
user: postgres
|
||||
# Uncomment this if you want to have manual access
|
||||
# ports:
|
||||
# - '5432:5432'
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
environment:
|
||||
- "POSTGRES_PASSWORD=toor"
|
||||
volumes:
|
||||
# If you want to have persistence, mount postgres data folder
|
||||
- "./assets/docker/postgres/scripts:/docker-entrypoint-initdb.d"
|
Loading…
Reference in a new issue