Compare commits

...

34 Commits

Author SHA1 Message Date
b99c1044ca Merge pull request #123 from dtandersen/update-0.16.20
Updated to version 0.16.20
2018-01-26 14:47:14 -08:00
b37af9bf93 update to 0.16.20 2018-01-26 21:43:48 +00:00
185ee256ff Merge pull request #122 from dtandersen/update-0.16.19
Updated to version 0.16.19
2018-01-25 14:29:24 -08:00
6020015574 update to 0.16.19 2018-01-25 19:53:49 +00:00
a520b87fc8 update to 0.16.18 (#121) 2018-01-23 13:05:56 +01:00
e3abfbbe9b Merge pull request #118 from dtandersen/update-0.16.17
Updated to version 0.16.17
2018-01-22 12:54:07 -08:00
6a135a06bc update to 0.16.17 2018-01-22 20:23:49 +00:00
189395d5c8 Merge pull request #112 from dtandersen/update-0.16.16
Updated to version 0.16.16
2018-01-10 09:15:09 -08:00
4c1ea766f4 update to 0.16.16 2018-01-10 16:48:33 +00:00
9ce9a63cfc alpine 3.7 2018-01-09 14:59:21 -08:00
8d16422fcb Merge pull request #110 from dtandersen/update-0.16.15
Updated to version 0.16.15
2018-01-05 13:48:40 -08:00
628c7a34aa update to 0.16.15 2018-01-05 20:28:30 +00:00
eafc933ca5 Merge pull request #109 from dtandersen/update-0.16.14
Updated to version 0.16.14
2018-01-04 14:48:22 -08:00
0175ddbca9 update to 0.16.14 2018-01-04 21:08:30 +00:00
d994449808 Merge pull request #108 from dtandersen/update-0.16.13
Updated to version 0.16.13
2018-01-03 14:46:07 -08:00
4e63b2654e update to 0.16.13 2018-01-03 21:53:30 +00:00
abe6054b27 Merge pull request #107 from dtandersen/update-0.16.12
Updated to version 0.16.12
2017-12-31 09:29:11 -08:00
4fc35c3cdb update to 0.16.12 2017-12-31 12:18:31 +00:00
081b0c244f vagrant 2017-12-30 23:22:09 -08:00
a331033196 updated lan game docs 2017-12-30 21:07:06 -08:00
1e3d6d7886 docker compose instructions 2017-12-30 20:40:58 -08:00
2474da335e minor text changes 2017-12-30 20:34:18 -08:00
648b81edf8 Merge pull request #101 from smessmer/patch-1
Fix volume permissions for docker-compose
2017-12-30 20:26:08 -08:00
25326b9073 0.16 not 1.16 2017-12-30 19:16:44 -08:00
cae2d3b226 Merge pull request #99 from jmerdich/patch-1
Document the required permissions change in 1.16+
2017-12-30 19:15:52 -08:00
e13768aa12 updated ports 2017-12-30 19:14:32 -08:00
78f00b9f17 changed paths to /opt/factorio instead of /tmp/factorio 2017-12-30 19:12:15 -08:00
aedc8a29a4 0.16.11 2017-12-30 17:08:50 -08:00
7168f2927c 0.16.10 2017-12-30 17:05:46 -08:00
7b19c3bfa5 Merge pull request #103 from dtandersen/update-0.16.9
Updated to version 0.16.9
2017-12-30 16:53:06 -08:00
bffa336cb2 Merge branch 'master' into update-0.16.9 2017-12-30 16:52:57 -08:00
739ed46afe update to 0.16.9 2017-12-29 21:43:33 +00:00
7113c03076 Fix volume permissions for docker-compose
When using named containers in docker compose, it creates them with root and the factorio docker container fails to start because it doesn't have write permissions. Reproduce by using the following docker-compose file:

    version: '3.2'
    services:
      server:
        image: dtandersen/factorio:0.16.7
        volumes:
        - logs:/var/log
        - data:/factorio
        ports:
        - "34197:34197/udp"
        - "27015:27015/tcp"
    volumes:
      logs:
      data:

With this proposed change, the /factorio folder is created *before* it is made a volume. This causes docker to correctly preserve the permissions, the docker-compose file above works now.

This is related to https://github.com/dtandersen/docker_factorio_server/issues/91 and maybe also makes https://github.com/dtandersen/docker_factorio_server/pull/99 obsolete.
2017-12-28 12:37:23 +00:00
2095404c2a Document the required permissions change in 1.16+
Make sure users of 1.16 don't get stopped by weird permissions errors created by #91 because factorio is no longer run as root in the container.
2017-12-21 17:54:38 -07:00
3 changed files with 92 additions and 14 deletions

View File

@ -1,4 +1,4 @@
FROM frolvlad/alpine-glibc:alpine-3.6
FROM frolvlad/alpine-glibc:alpine-3.7
MAINTAINER https://github.com/dtandersen/docker_factorio_server
@ -9,12 +9,10 @@ ARG PGID=845
ENV PORT=34197 \
RCON_PORT=27015 \
VERSION=0.16.8 \
SHA1=591cca79bb71f5e4d809367d0beb5b7834f73c24
VERSION=0.16.20 \
SHA1=cef6512e48d723556c028448e228f22ae7a68890
VOLUME /factorio
RUN mkdir -p /opt && \
RUN mkdir -p /opt /factorio && \
apk add --update --no-cache pwgen && \
apk add --update --no-cache --virtual .build-deps curl && \
curl -sSL https://www.factorio.com/get-download/$VERSION/headless/linux64 \
@ -30,6 +28,8 @@ RUN mkdir -p /opt && \
adduser -u $PUID -G $USER -s /bin/sh -SDH $GROUP && \
chown -R $USER:$GROUP /opt/factorio /factorio
VOLUME /factorio
EXPOSE $PORT/udp $RCON_PORT/tcp
COPY ./docker-entrypoint.sh /

View File

@ -3,6 +3,7 @@ services:
factorio:
build: .
ports:
- "34197:34197"
- "34197:34197/udp"
- "27015:27015/tcp"
volumes:
- /opt/factorio:/factorio

View File

@ -1,6 +1,6 @@
# Factorio [![](https://images.microbadger.com/badges/image/dtandersen/factorio.svg)](https://microbadger.com/images/dtandersen/factorio "Get your own image badge on microbadger.com") [![Docker Pulls](https://img.shields.io/docker/pulls/dtandersen/factorio.svg)](https://hub.docker.com/r/dtandersen/factorio/) [![Docker Stars](https://img.shields.io/docker/stars/dtandersen/factorio.svg)](https://hub.docker.com/r/dtandersen/factorio/)
* `0.16.8`, `0.16`, `latest` [(0.16/Dockerfile)](https://github.com/dtandersen/docker_factorio_server/blob/master/0.16/Dockerfile)
* `0.16.20`, `0.16`, `latest` [(0.16/Dockerfile)](https://github.com/dtandersen/docker_factorio_server/blob/master/0.16/Dockerfile)
* `0.15.40`, `0.15`, `stable` [(0.15/Dockerfile)](https://github.com/dtandersen/docker_factorio_server/blob/master/0.15/Dockerfile)
* `0.14.23`, `0.14` [(0.14/Dockerfile)](https://github.com/dtandersen/docker_factorio_server/blob/master/0.14/Dockerfile)
* `0.13.20`, `0.13` [(0.13/Dockerfile)](https://github.com/dtandersen/docker_factorio_server/blob/master/0.13/Dockerfile)
@ -29,11 +29,15 @@ NOTE: This is only the server. The game is available at [factorio.com](https://w
## Quick Start
Run the server to create the necessary folder structure and configuration files. For this example data is stored in `/tmp/factorio`.
Run the server to create the necessary folder structure and configuration files. For this example data is stored in `/opt/factorio`.
```
docker run -d -p 34197:34197/udp -p 27015:27015/tcp \
-v /tmp/factorio:/factorio \
sudo mkdir -p /opt/factorio
sudo chown 845:845 /opt/factorio
sudo docker run -d \
-p 34197:34197/udp \
-p 27015:27015/tcp \
-v /opt/factorio:/factorio \
--name factorio \
--restart=always \
dtandersen/factorio
@ -43,10 +47,12 @@ For those new to Docker, here is an explanation of the options:
* `-d` - Run as a daemon ("detached").
* `-p` - Expose ports.
* `-v` - Mount `/tmp/factorio` on the local file system to `/factorio` in the container.
* `-v` - Mount `/opt/factorio` on the local file system to `/factorio` in the container.
* `--restart` - Restart the server if it crashes and at system start
* `--name` - Name the container "factorio" (otherwise it has a funny random name).
The `chown` command is needed because in 0.16+, we no longer run the game server as root for security reasons, but rather as a 'factorio' user with user id 845. The host must therefore allow these files to be written by that user.
Check the logs to see what happened:
```
@ -59,7 +65,7 @@ Stop the server:
docker stop factorio
```
Now there's a `server-settings.json` file in the folder `/tmp/factorio/config`. Modify this to your liking and restart the server:
Now there's a `server-settings.json` file in the folder `/opt/factorio/config`. Modify this to your liking and restart the server:
```
docker start factorio
@ -95,7 +101,7 @@ Now run the server as before. In about a minute the new version of Factorio shou
## Saves
A new map named `_autosave1.zip` is generated the first time the server is started. The `map-gen-settings.json` and `map-settings.json` files in `/tmp/factorio/config` are used for the map settings. On subsequent runs the newest save is used.
A new map named `_autosave1.zip` is generated the first time the server is started. The `map-gen-settings.json` and `map-settings.json` files in `/opt/factorio/config` are used for the map settings. On subsequent runs the newest save is used.
To load an old save stop the server and run the command `touch oldsave.zip`. This resets the date. Then restart the server. Another option is to delete all saves except one.
@ -150,6 +156,40 @@ To keep things simple, the container uses a single volume mounted at `/factorio`
`-- _autosave1.zip
## Docker Compose
[Docker Compose](https://docs.docker.com/compose/install/) is an easy way to run Docker containers.
First get a [docker-compose.yml](https://github.com/dtandersen/docker_factorio_server/blob/master/0.16/docker-compose.yml) file. To get it from this repository:
```
git clone https://github.com/dtandersen/docker_factorio_server.git
cd docker_factorio_server/0.16
```
Or make your own:
```
version: '2'
services:
factorio:
image: dtandersen/factorio
ports:
- "34197:34197/udp"
- "27015:27015/tcp"
volumes:
- /opt/factorio:/factorio
```
Now cd to the directory with docker-compose.yml and run:
```
sudo mkdir -p /opt/factorio
sudo chown 845:845 /opt/factorio
sudo docker-compose up -d
```
## Ports
* `34197/udp` - Game server (required).
@ -159,8 +199,45 @@ To keep things simple, the container uses a single volume mounted at `/factorio`
## Environment Variables
* `PORT` (0.15+) - Start the server on an alterate port, .e.g. `docker run -e "PORT=34198"`.
* `RCON_PORT` (0.16+) - Start the RCON on an alterate port, .e.g. `docker run -e "RCON_PORT=34198"`.
## LAN Games
Ensure the `lan` setting in server-settings.json is `true`.
```
"visibility":
{
"public": false,
"lan": true
},
```
Start the container with the `--network=host` option so clients can automatically find LAN games. Refer to the Quick Start to create the `/opt/factorio` directory.
```
sudo docker run -d \
--network=host \
-p 34197:34197/udp \
-p 27015:27015/tcp \
-v /opt/factorio:/factorio \
--name factorio \
--restart=always \
dtandersen/factorio
```
VirtualBox users must enable Bridged networking in order for the host to be assigned an internal network IP. Enable Bridged networking in Vagrant with:
```
config.vm.network "public_network"
config.vm.network "forwarded_port", guest: 34197, host: 34197
```
## Vagrant
Vagrant is a good way for those without a Linux machine to try Docker. Check out the [Factorio Vagrant Box](https://github.com/dtandersen/factorio-lan-vagrant).
## Troubleshooting
**My server is listed in the server browser, but nobody can connect**