Fixes to docker container

This commit is contained in:
Calabro, Brandon
2025-07-20 20:17:53 -05:00
commit 965ba984d3
9 changed files with 167 additions and 0 deletions

10
.idea/.gitignore generated vendored Normal file
View File

@@ -0,0 +1,10 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Environment-dependent path to Maven home directory
/mavenHomeManager.xml
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

6
.idea/misc.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>

8
.idea/modules.xml generated Normal file
View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/swg-docker.iml" filepath="$PROJECT_DIR$/swg-docker.iml" />
</modules>
</component>
</project>

6
.idea/vcs.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

54
Dockerfile Normal file
View File

@@ -0,0 +1,54 @@
FROM ubuntu:18.04
RUN dpkg --add-architecture i386 && \
apt-get update
RUN apt-get install -y \
alien \
ant \
bison \
cmake \
flex \
g++-multilib \
gcc-multilib \
git \
libaio1:i386 \
libboost-dev \
libboost-program-options-dev \
libcurl4-gnutls-dev:i386 \
libncurses5-dev:i386 \
libsqlite3-dev \
libxml2-dev:i386 \
openjdk-11-jdk:i386 \
psmisc \
supervisor \
wget
RUN apt-get clean && \
rm -rf /var/lib/apt/lists/*
RUN mkdir -p /var/log/supervisor
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
RUN wget https://github.com/SWG-Source/releases/releases/download/instantclients/oracle-instantclient18.3-basiclite-18.3.0.0.0-1.i386.rpm
RUN wget https://github.com/SWG-Source/releases/releases/download/instantclients/oracle-instantclient18.3-devel-18.3.0.0.0-1.i386.rpm
RUN wget https://github.com/SWG-Source/releases/releases/download/instantclients/oracle-instantclient18.3-sqlplus-18.3.0.0.0-1.i386.rpm
RUN alien -i --target=amd64 oracle-instantclient18.3-basiclite-18.3.0.0.0-1.i386.rpm
RUN alien -i --target=amd64 oracle-instantclient18.3-devel-18.3.0.0.0-1.i386.rpm
RUN alien -i --target=amd64 oracle-instantclient18.3-sqlplus-18.3.0.0.0-1.i386.rpm
RUN rm -f oracle-instantclient18.3-*-18.3.0.0.0-1.i386.rpm
ENV ORACLE_HOME=/usr/lib/oracle/18.3/client
ENV LD_LIBRARY_PATH=/usr/lib/oracle/18.3/client/lib:/usr/include/oracle/18.3/client
ENV JAVA_HOME=/usr/lib/jvm/java-11-openjdk-i386
RUN git clone https://github.com/SWG-Source/swg-main.git /swg-main
WORKDIR /swg-main
RUN ant git_update_submods
RUN echo "db_service = FREEPDB1" > local.properties && \
echo "dbip = oracle" >> local.properties
CMD ["/usr/bin/supervisord", "-n"]

8
README.md Normal file
View File

@@ -0,0 +1,8 @@
# swg-docker
Instructions:
- Clone this repository
- `docker compose up -d`
- `docker exec -it swg bash` to log into a shell in the swg container
- `ant swg` to compile the game and the assets
- `ant start` to run the server

49
docker-compose.yaml Normal file
View File

@@ -0,0 +1,49 @@
services:
oracle:
container_name: oracle
hostname: oracle
image: gvenzl/oracle-free:latest
ports:
- "1521:1521"
environment:
ORACLE_PASSWORD: swg
APP_USER: swg
APP_USER_PASSWORD: swg
healthcheck:
test: ["CMD", "healthcheck.sh"]
interval: 10s
timeout: 5s
retries: 10
start_period: 5s
start_interval: 5s
volumes:
- oradata:/opt/oracle/oradata
swg:
container_name: swg
hostname: swg
depends_on:
oracle:
condition: service_healthy
build:
context: .
ports:
- "44451-44453:44451-44453/tcp"
- "44462-44464:44462-44464/tcp"
- "44451-44453:44451-44453/udp"
- "44462-44464:44462-44464/udp"
environment:
DB_HOST: oracle
DB_PORT: 1521
DB_USER: swg
ORACLE_PASSWORD: swg
DB_PASSWORD: swg
tty: true
stdin_open: true
volumes:
- swg-main:/swg-main
volumes:
oradata:
swg-main:

18
supervisord.conf Normal file
View File

@@ -0,0 +1,18 @@
[supervisord]
nodaemon=true
[program:chat]
command=/swg-main/chat/stationchat
directory=/swg-main/chat
autostart=false
autorestart=false
stderr_logfile=/var/log/supervisor/stationchat.err.log
stdout_logfile=/var/log/supervisor/stationchat.out.log
[program:swg]
command=/swg-main/startServer.sh
directory=/swg-main
autostart=false
autorestart=false
stderr_logfile=/var/log/supervisor/swg.err.log
stdout_logfile=/var/log/supervisor/swg.out.log

8
swg-docker.iml Normal file
View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="GENERAL_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>