feat: finalize file structure for Docker
This commit is contained in:
parent
2523581537
commit
7439475766
6 changed files with 99 additions and 3 deletions
3
docker/Dockerfile.database
Normal file
3
docker/Dockerfile.database
Normal file
|
@ -0,0 +1,3 @@
|
|||
FROM postgres:17-alpine
|
||||
ADD sql /opt/lwsql
|
||||
ADD misc/init-sql.sh /docker-entrypoint-initdb.d
|
75
docker/Dockerfile.game
Normal file
75
docker/Dockerfile.game
Normal file
|
@ -0,0 +1,75 @@
|
|||
FROM debian:12-slim
|
||||
RUN <<EOF
|
||||
set -e
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
export DEBCONF_NONINTERACTIVE_SEEN=true
|
||||
apt-get update && apt-get dist-upgrade -uy
|
||||
|
||||
apt-get -y install lsb-release ca-certificates curl
|
||||
curl -sSLo /tmp/debsuryorg-archive-keyring.deb \
|
||||
https://packages.sury.org/debsuryorg-archive-keyring.deb
|
||||
dpkg -i /tmp/debsuryorg-archive-keyring.deb
|
||||
rm -f /tmp/debsuryorg-archive-keyring.deb
|
||||
echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" \
|
||||
> /etc/apt/sources.list.d/php.list
|
||||
apt-get update
|
||||
apt-get install -y apache2 libapache2-mod-php8.3 \
|
||||
php8.3-cli php8.3-opcache php8.3-pgsql \
|
||||
php8.3-xml socat
|
||||
|
||||
adduser --system --ingroup www-data \
|
||||
--shell '/bin/false' \
|
||||
--comment 'LWB5 Ticks' \
|
||||
--home /opt/lwb5 --no-create-home \
|
||||
lwticks
|
||||
|
||||
a2dismod mpm_event
|
||||
a2enmod mpm_prefork
|
||||
/bin/echo -e "Listen 80\nListen 81" > /etc/apache2/ports.conf
|
||||
cat > /etc/apache2/sites-available/lwb5-main.conf <<EOC
|
||||
<VirtualHost *:80>
|
||||
ServerAdmin webmaster@localhost
|
||||
DocumentRoot /opt/lwb5/site
|
||||
ErrorLog /dev/stderr
|
||||
CustomLog /dev/stdout combined
|
||||
<Directory /opt/lwb5/site>
|
||||
Require all granted
|
||||
php_flag log_errors on
|
||||
php_value error_log syslog
|
||||
</Directory>
|
||||
<Files "*.inc">
|
||||
Require all denied
|
||||
</Files>
|
||||
</VirtualHost>
|
||||
EOC
|
||||
cat > /etc/apache2/sites-available/lwb5-admin.conf <<EOC
|
||||
<VirtualHost *:81>
|
||||
ServerAdmin webmaster@localhost
|
||||
DocumentRoot /opt/lwb5/admin
|
||||
ErrorLog /dev/stderr
|
||||
CustomLog /dev/stdout combined
|
||||
<Directory /opt/lwb5/admin>
|
||||
Require all granted
|
||||
php_flag log_errors on
|
||||
php_value error_log syslog
|
||||
</Directory>
|
||||
<Files "*.inc">
|
||||
Require all denied
|
||||
</Files>
|
||||
</VirtualHost>
|
||||
EOC
|
||||
a2dissite 000-default
|
||||
a2ensite lwb5-main
|
||||
a2ensite lwb5-admin
|
||||
|
||||
mkdir /var/spool/pgen
|
||||
chgrp www-data /var/spool/pgen
|
||||
chmod 1775 /var/spool/pgen
|
||||
EOF
|
||||
|
||||
VOLUME /var/spool/pgen
|
||||
EXPOSE 80 81
|
||||
|
||||
ADD game /opt/lwb5
|
||||
|
||||
ENTRYPOINT ["/opt/lwb5/run-lwb5.sh"]
|
17
docker/Dockerfile.planetgen
Normal file
17
docker/Dockerfile.planetgen
Normal file
|
@ -0,0 +1,17 @@
|
|||
FROM debian:12-slim
|
||||
ADD ./planetgen /opt/planetgen
|
||||
RUN <<EOF
|
||||
set -e
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
export DEBCONF_NONINTERACTIVE_SEEN=true
|
||||
apt-get update && apt-get dist-upgrade -uy
|
||||
|
||||
apt-get install -y perl povray
|
||||
|
||||
mkdir -p /var/spool/pgen/{input,output}
|
||||
chown -R www-data:www-data /var/spool/pgen
|
||||
EOF
|
||||
|
||||
VOLUME /var/spool/pgen/input /var/spool/pgen/output
|
||||
|
||||
ENTRYPOINT ["/opt/planetgen/planetmaker.pl"]
|
74
docker/compose.yml
Normal file
74
docker/compose.yml
Normal file
|
@ -0,0 +1,74 @@
|
|||
name: legacyworlds
|
||||
|
||||
services:
|
||||
|
||||
db:
|
||||
build:
|
||||
context: ../
|
||||
dockerfile: docker/Dockerfile.database
|
||||
restart: always
|
||||
shm_size: 128mb
|
||||
volumes:
|
||||
- database:/var/lib/postgresql/data
|
||||
environment:
|
||||
LW_ADMIN_MAIL: ${LW_ADMIN_MAIL}
|
||||
LW_ADMIN_NAME: ${LW_ADMIN_NAME}
|
||||
LW_ADMIN_PASSWORD_FILE: /run/secrets/lw_admin_password
|
||||
LW_DB_ADMIN_PASS_FILE: /run/secrets/lw_db_admin_pass
|
||||
LW_DB_USER_PASS_FILE: /run/secrets/lw_db_user_pass
|
||||
LW_PEACEKEEPERS_PASSWORD_FILE: /run/secrets/lw_peacekeepers_password
|
||||
POSTGRES_PASSWORD_FILE: /run/secrets/db_password
|
||||
secrets:
|
||||
- db_password
|
||||
- lw_db_user_pass
|
||||
- lw_db_admin_pass
|
||||
- lw_admin_password
|
||||
- lw_peacekeepers_password
|
||||
|
||||
game:
|
||||
build:
|
||||
context: ../
|
||||
dockerfile: docker/Dockerfile.game
|
||||
restart: always
|
||||
ports:
|
||||
- "80:80"
|
||||
- "81:81"
|
||||
volumes:
|
||||
- type: bind
|
||||
source: ../game
|
||||
target: /opt/lwb5
|
||||
- type: tmpfs
|
||||
target: /tmp
|
||||
tmpfs:
|
||||
size: 1g
|
||||
- planets:/opt/lwb5/site/static/beta5/pics/pl:ro
|
||||
- pgen:/var/spool/pgen:rw
|
||||
|
||||
planetgen:
|
||||
build:
|
||||
context: ..
|
||||
dockerfile: docker/Dockerfile.planetgen
|
||||
restart: always
|
||||
volumes:
|
||||
- pgen:/var/spool/pgen/input:rw
|
||||
- planets:/var/spool/pgen/output:rw
|
||||
environment:
|
||||
PGEN_INPUT: /var/spool/pgen/input
|
||||
PGEN_OUTPUT: /var/spool/pgen/output
|
||||
|
||||
volumes:
|
||||
pgen:
|
||||
planets:
|
||||
database:
|
||||
|
||||
secrets:
|
||||
db_password:
|
||||
environment: DB_PASSWORD
|
||||
lw_db_user_pass:
|
||||
environment: LW_DB_USER_PASS
|
||||
lw_db_admin_pass:
|
||||
environment: LW_DB_ADMIN_PASS
|
||||
lw_admin_password:
|
||||
environment: LW_ADMIN_PASSWORD
|
||||
lw_peacekeepers_password:
|
||||
environment: LW_PEACEKEEPERS_PASSWORD
|
17
docker/env.example
Normal file
17
docker/env.example
Normal file
|
@ -0,0 +1,17 @@
|
|||
# Password for the database superuser
|
||||
DB_PASSWORD=...
|
||||
|
||||
# Legacyworlds database - Main user
|
||||
LW_DB_USER_PASS=...
|
||||
# Legacyworlds database - Admin user
|
||||
LW_DB_ADMIN_PASS=...
|
||||
|
||||
# First admin account - User name
|
||||
LW_ADMIN_NAME=...
|
||||
# First admin account - Email address
|
||||
LW_ADMIN_MAIL=...
|
||||
# First admin account - Password (warning: will be stored in the clear)
|
||||
LW_ADMIN_PASSWORD=...
|
||||
|
||||
# "Peacekeepers" fake player - Password (should be a random string)
|
||||
LW_PEACEKEEPERS_PASSWORD=...
|
Loading…
Add table
Add a link
Reference in a new issue