diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..17d8b63 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,14 @@ +# Files and directories created by pub. +Dockerfile +build/ +.dart_tool/ +.git/ +.github/ +.gitignore +.packages + +.data/ +.tmp/ + +# Conventional directory for build output. +build/ diff --git a/Dockerfile b/Dockerfile index c8c796f..2d0e2d4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,8 @@ # Specify the Dart SDK base image version using dart: (ex: dart:2.12) -FROM dart:stable AS build +FROM dart:stable AS compile # Resolve app dependencies. -WORKDIR /app +WORKDIR /lchatserver COPY pubspec.* ./ RUN dart pub get @@ -10,14 +10,17 @@ RUN dart pub get COPY . . # Ensure packages are still up-to-date if anything has changed RUN dart pub get --offline -RUN dart compile exe bin/server.dart -o bin/server +RUN dart compile exe bin/tcp_server.dart -o bin/tcp_server -# Build minimal serving image from AOT-compiled `/server` and required system -# libraries and configuration files stored in `/runtime/` from the build stage. -FROM scratch -COPY --from=build /runtime/ / -COPY --from=build /app/bin/server /app/bin/ +FROM ubuntu:latest + +RUN apt-get update +RUN apt-get -y install libsqlite3-0 libsqlite3-dev + +# Copy the previously built executable into the scratch layer +COPY --from=compile /runtime/ ~/server/ +COPY --from=compile /lchatserver/bin/tcp_server ~/server/lchatserver/bin/ # Start server. EXPOSE 20706 -CMD ["/app/bin/server"] \ No newline at end of file +CMD ["~/server/lchatserver/bin/tcp_server"] \ No newline at end of file diff --git a/bin/tcp_server.dart b/bin/tcp_server.dart index 3ab5e9e..acd0145 100644 --- a/bin/tcp_server.dart +++ b/bin/tcp_server.dart @@ -1,7 +1,7 @@ /* * @Author : Linloir * @Date : 2022-10-06 15:44:16 - * @LastEditTime : 2022-10-17 22:56:11 + * @LastEditTime : 2022-10-19 14:41:56 * @Description : */ @@ -15,10 +15,8 @@ import 'package:tcp_server/tcpcontroller/request.dart'; import 'package:tcp_server/tcpcontroller/response.dart'; void main(List arguments) async { - //Set port - var address = arguments.isEmpty ? '127.0.0.1' : arguments[0]; //Set address - var port = arguments.length < 2 ? 20706 : int.tryParse(arguments[1]) ?? 20706; + var port = arguments.isEmpty ? 20706 : int.tryParse(arguments[1]) ?? 20706; //Create nessesary working directories await Directory('${Directory.current.path}/.tmp').create(); @@ -28,7 +26,7 @@ void main(List arguments) async { await DataBaseHelper().initialize(); Map> tokenMap = {}; Map> controllerMap = {}; - var listenSocket = await ServerSocket.bind(address, port); + var listenSocket = await ServerSocket.bind(InternetAddress.anyIPv4, port); listenSocket.listen( (socket) { var controller = TCPController(socket: socket);