Skip to content

Commit 03d89dd

Browse files
Experience (#3)
New sight of this project
1 parent 2fee479 commit 03d89dd

File tree

6 files changed

+154
-54
lines changed

6 files changed

+154
-54
lines changed

Diff for: .github/workflows/deploy.yml

+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
name: Deploy
2+
3+
on:
4+
push:
5+
branches: [ "experience", "master" ]
6+
7+
jobs:
8+
deploy2dockerhub:
9+
name: Deploy to Dockerhub
10+
runs-on: ubuntu-latest
11+
environment: dockerhub
12+
steps:
13+
- name: Check out the repo
14+
uses: actions/checkout@v3
15+
- name: Log in to Docker Hub
16+
uses: docker/login-action@v2
17+
with:
18+
username: ${{ secrets.DOCKERHUB_USERNAME }}
19+
password: ${{ secrets.DOCKERHUB_PASSWORD }}
20+
- name: Deploy
21+
uses: docker/build-push-action@v4
22+
with:
23+
context: .
24+
push: true
25+
tags: disinterpreter/ragemp-server:latest
26+
27+
deploy2github:
28+
name: Deploy to GitHub registry
29+
runs-on: ubuntu-latest
30+
steps:
31+
- name: Check out the repo
32+
uses: actions/checkout@v3
33+
- name: Login to GitHub Container Registry
34+
uses: docker/login-action@v3
35+
with:
36+
registry: ghcr.io
37+
username: ${{ github.actor }}
38+
password: ${{ secrets.GITHUB_TOKEN }}
39+
- name: Deploy
40+
uses: docker/build-push-action@v4
41+
with:
42+
context: .
43+
push: true
44+
tags: ghcr.io/disinterpreter/ragemp-server:latest

Diff for: Dockerfile

+20-35
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,24 @@
1-
FROM debian:jessie
2-
MAINTAINER Disinterpreter "[email protected]"
1+
FROM debian:bookworm-slim
32

4-
ENV RAGEMP 0.1
5-
6-
# both and tcp and udp? check it!
73
EXPOSE 20005
84
EXPOSE 22005/udp
95
EXPOSE 22006
10-
# First run -- install dependency
11-
RUN echo 'deb http://httpredir.debian.org/debian testing main contrib non-free' > /etc/apt/sources.list && \
12-
apt-get update && \
13-
apt-get install -y -t testing gcc wget && \
14-
apt-get clean
15-
16-
# Second run -- install app
17-
RUN useradd ragemp && \
18-
# Mountable volume
19-
mkdir /ragemp && \
20-
# Download and extract
21-
wget -qO- -O /tmp/server https://cdn.rage.mp/lin/server && \
22-
mkdir /opt/x64/ && \
23-
mv /tmp/server /opt/x64/server
24-
#tar -zxvf /tmp/linsrv64.tar.gz -C /opt && \
25-
#rm /tmp/linsrv64.tar.gz
26-
RUN chmod +x /opt/x64/server
27-
# Set links between master and mountable volume
28-
29-
# Publish volume
30-
VOLUME /ragemp
31-
32-
RUN ln -s /opt/x64/conf.json /ragemp/conf.json
33-
# You can add packages, maps, etc in remote volume
34-
35-
36-
ADD start_server.sh /opt
37-
38-
# Maybe directly run server? e.g. "/ragemp/x64/server"
39-
ENTRYPOINT ["/opt/start_server.sh"]
6+
7+
RUN apt update && apt install -y wget liblocal-lib-perl libjson-perl libatomic1 procps && \
8+
apt clean autoclean && \
9+
apt autoremove --yes && \
10+
rm -rf /var/lib/{apt,dpkg,cache,log}/
11+
12+
WORKDIR /ragemp
13+
14+
RUN wget https://cdn.rage.mp/updater/prerelease/server-files/linux_x64.tar.gz && \
15+
tar -xvf ./linux_x64.tar.gz && \
16+
rm -rf ./linux_x64.tar.gz
17+
18+
WORKDIR /ragemp/ragemp-srv
19+
20+
21+
ADD start_server.sh /ragemp/ragemp-srv
22+
ADD config-generator.pl /ragemp/
23+
24+
ENTRYPOINT ["./start_server.sh"]

Diff for: README.md

+45-9
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,53 @@
1+
![Docker: Pulls](https://img.shields.io/docker/pulls/disinterpreter/ragemp-server)
2+
13
# docker-ragemp
2-
Run RAGE Multiplayer in a Docker container.
4+
A docker container for RAGE Multiplayer
5+
6+
## History
7+
It is the first docker container implementation for RAGE MP Server, first commit of this repo is 11 dec 2016.
8+
9+
But after the time I've got new experience with working on containerization and I decided to upgrade this repo added new features.
10+
11+
## Features
12+
- Updated version of the OS and the code
13+
- Added auto generation of config file (`conf.json`)
14+
- Upgraded docker compose
15+
316

4-
Build
5-
`docker build -t ragemp`
17+
## Usage
618

19+
For the first launch, you should make your settings via ENV
20+
These ENV have tag `RAGE_`.
21+
Examples:
22+
```yaml
23+
RAGE_MAXPLAYERS: "100"
24+
RAGE_NAME: "RAGE:MP Unofficial docker server [docker]"
25+
RAGE_GAMEMODE: "freeroam"
26+
RAGE_STREAM_DISTANCE: "300.0"
27+
RAGE_ANNOUNCE: '1'
28+
RAGE_CSHARP: "disabled"
29+
RAGE_BIND: '0.0.0.0'
30+
RAGE_PORT: '22005'
31+
```
32+
Pay your attention with `RAGE_STREAM_DISTANCE` it will be converted to `stream-distance` and use `1/0` for `boolean` values like in `RAGE_ANNOUNCE`
733

8-
Run
9-
`docker run -d -v /ragemp:/ragemp -p 22005:22005/udp ragemp`
34+
For the building you should use the default command
1035

36+
```
37+
docker build -t ragemp-server:latest .
38+
```
1139
12-
Get from a pull
13-
`docker pull disinterpreter/docker-ragemp`
40+
For the running without `docker-compose` use
41+
```
42+
docker run -e RAGE_BIND=0.0.0.0 .... -p 22005:22005/udp ragemp-server:latest
43+
```
1444
1545
16-
Run from a pull
17-
`docker run --rm -v /ragemp:/ragemp -p 22005:22005/udp disinterpreter/docker-ragemp`
46+
Pull from a container registry
47+
```
48+
docker pull disinterpreter/ragemp-server:latest
49+
```
50+
or
51+
```
52+
docker pull ghcr.io/disinterpreter/ragemp-server:latest
53+
```

Diff for: config-generator.pl

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#!/usr/bin/perl
2+
3+
use strict;
4+
use warnings;
5+
use Env;
6+
use JSON;
7+
use Scalar::Util qw(looks_like_number);
8+
9+
my $config = {};
10+
foreach (sort keys %ENV) {
11+
my $env = $_;
12+
if ($env =~ m/^RAGE_/g) {
13+
my $value = $ENV{$env};
14+
$env =~ s/^RAGE_(.*)/$1/gm;
15+
$env =~ s/_/-/gm;
16+
17+
if (looks_like_number($value) == 1) {
18+
$config->{lc($env)} = $value + 0;
19+
} else {
20+
$config->{lc($env)} = $value;
21+
}
22+
23+
}
24+
}
25+
my $conf = JSON->new->pretty->encode($config);
26+
print ($conf);
27+
1;

Diff for: docker-compose.yml

+15-5
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,22 @@
1-
version: "2"
1+
version: "3.9"
22

33
services:
44
ragemp-server:
5-
image: ragemp
6-
container_name: ragemp-server
5+
image: disinterpreter/ragemp-server:latest
76
ports:
87
- 22005:22005
8+
- 22006:22006
99
- 22005:22005/udp
10-
volumes:
11-
- /ragemp:/ragemp
10+
environment:
11+
RAGE_MAXPLAYERS: "100"
12+
RAGE_NAME: "RAGE:MP Unofficial docker server [docker]"
13+
RAGE_GAMEMODE: "freeroam"
14+
RAGE_STREAM_DISTANCE: "300.0"
15+
RAGE_ANNOUNCE: '1'
16+
RAGE_CSHARP: "disabled"
17+
RAGE_BIND: '0.0.0.0'
18+
RAGE_PORT: '22005'
19+
20+
# volumes:
21+
# - /ragemp:/ragemp
1222
restart: always

Diff for: start_server.sh

+3-5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
#!/bin/sh
2-
echo "Starting server!!!"
3-
#nohup sh -c /root/server/server >/dev/null 2>&1 &
4-
cp -r -n /opt/x64/* /ragemp
5-
cd /ragemp
6-
/ragemp/server
2+
3+
../config-generator.pl > ./conf.json
4+
./ragemp-server

0 commit comments

Comments
 (0)