Skip to content

Commit 186bb2e

Browse files
authored
optimize dockerfile (#156)
1 parent fec5ecc commit 186bb2e

95 files changed

Lines changed: 234 additions & 3339 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.dockerignore

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,8 @@ coverage/
3131
**/*.tmp
3232
**/.nyc_output
3333
**/coverage/
34-
**/e2e/
34+
**/e2e/
35+
**/[Bb]in/
36+
**/[Oo]bj/
37+
**/[Rr]elease/
38+
**/OpenAlprWebhookProcessor.Server/config

OpenAlprWebhookProcessor.Server/CameraUpdateService/ISimpleCameraScheduler.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public interface ISimpleCameraScheduler
2323

2424
List<ScheduledJobInfo> GetAllScheduledJobs();
2525

26-
Task ScheduleOverlayAsync(CameraUpdateRequest cameraUpdateRequest, CancellationToken cancellationToken = default);
26+
Task ScheduleOverlayAsync(CameraUpdateRequest cameraUpdaterequest, CancellationToken cancellationToken);
2727

2828
Task ClearOverlayAsync(Guid cameraId, CancellationToken cancellationToken = default);
2929

OpenAlprWebhookProcessor.Server/CameraUpdateService/SimpleCameraScheduler.cs

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -54,22 +54,28 @@ public async Task StopAsync(CancellationToken cancellationToken = default)
5454

5555
foreach (var kvp in _cancellationTokens)
5656
{
57-
kvp.Value.Cancel();
57+
await kvp.Value.CancelAsync();
5858
}
5959

6060
foreach (var kvp in _overlayCancellationTokens)
6161
{
62-
kvp.Value.Cancel();
62+
await kvp.Value.CancelAsync();
6363
}
6464

6565
foreach (var kvp in _cameraTimers)
6666
{
67-
kvp.Value?.Dispose();
67+
if (kvp.Value != null)
68+
{
69+
await kvp.Value.DisposeAsync();
70+
}
6871
}
6972

7073
foreach (var kvp in _overlayTimers)
7174
{
72-
kvp.Value?.Dispose();
75+
if (kvp.Value != null)
76+
{
77+
await kvp.Value.DisposeAsync();
78+
}
7379
}
7480

7581
_cameraTimers.Clear();
@@ -234,7 +240,7 @@ private void ScheduleCameraTimer(
234240

235241
try
236242
{
237-
_nextExecutionTimes.TryRemove(cameraId, out var whatever);
243+
_nextExecutionTimes.TryRemove(cameraId, out var _);
238244
await ExecuteCameraToggleAsync(cameraId, cancellationTokenSource.Token);
239245
await RescheduleCameraAsync(cameraId, cancellationTokenSource.Token);
240246
}
@@ -773,6 +779,8 @@ public void Dispose()
773779
_overlayExecutionTimes.Clear();
774780

775781
_disposed = true;
782+
783+
GC.SuppressFinalize(this);
776784
}
777785
}
778786
}

OpenAlprWebhookProcessor.Server/CameraUpdateService/SimpleCameraSchedulerHostedService.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,9 @@ protected override async Task ExecuteAsync(CancellationToken stoppingToken)
2828

2929
await Task.Delay(Timeout.Infinite, stoppingToken);
3030
}
31-
catch (OperationCanceledException)
31+
catch (OperationCanceledException ex)
3232
{
33-
_logger.LogInformation("SimpleCameraScheduler hosted service stopping");
33+
_logger.LogInformation(ex, "SimpleCameraScheduler hosted service stopping");
3434
}
3535
catch (Exception ex)
3636
{

OpenAlprWebhookProcessor.Server/Data/ProcessorContext.cs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,6 @@ public ProcessorContext(DbContextOptions<ProcessorContext> options)
1212
{
1313
}
1414

15-
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
16-
{
17-
base.OnConfiguring(optionsBuilder);
18-
}
19-
2015
public override async Task<int> SaveChangesAsync(CancellationToken cancellationToken = default)
2116
{
2217
await EnsureWalModeAsync(cancellationToken);

OpenAlprWebhookProcessor.Server/Dockerfile

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,13 @@ ARG GIT_ASSEMBLY_VERSION
2828
ARG GIT_FILE_VERSION
2929
WORKDIR /src
3030

31-
# Copy configuration files
3231
COPY ["openalprwebhookprocessor.client/angular.json", \
3332
"openalprwebhookprocessor.client/tsconfig*.json", \
3433
"openalprwebhookprocessor.client/karma.conf.js", \
3534
"openalprwebhookprocessor.client/eslint.config.mjs", \
3635
"openalprwebhookprocessor.client/ngsw-config.json", \
3736
"openalprwebhookprocessor.client/"]
3837

39-
# Copy source code (changes most frequently)
4038
COPY ["OpenAlprWebhookProcessor.Server/", "OpenAlprWebhookProcessor.Server/"]
4139
COPY ["openalprwebhookprocessor.client/src/", "openalprwebhookprocessor.client/src/"]
4240

@@ -47,22 +45,18 @@ RUN dotnet build "./OpenAlprWebhookProcessor.Server.csproj" -c $BUILD_CONFIGURAT
4745
-p:GitAssemblyVersion="$GIT_ASSEMBLY_VERSION" \
4846
-p:GitFileVersion="$GIT_FILE_VERSION" && \
4947
mkdir -p /app/build && \
50-
/root/.dotnet/tools/dotnet-ef migrations bundle \
48+
/root/.dotnet/tools/dotnet-ef migrations script \
5149
--project "./OpenAlprWebhookProcessor.Server.csproj" \
5250
--startup-project "./OpenAlprWebhookProcessor.Server.csproj" \
5351
--context ProcessorContext \
54-
--output /app/build/processor-migrator \
55-
--configuration $BUILD_CONFIGURATION \
56-
--verbose \
57-
--force && \
58-
/root/.dotnet/tools/dotnet-ef migrations bundle \
52+
--output /app/build/processor-migrations.sql \
53+
--configuration $BUILD_CONFIGURATION && \
54+
/root/.dotnet/tools/dotnet-ef migrations script \
5955
--project "./OpenAlprWebhookProcessor.Server.csproj" \
6056
--startup-project "./OpenAlprWebhookProcessor.Server.csproj" \
6157
--context UsersContext \
62-
--output /app/build/users-migrator \
63-
--configuration $BUILD_CONFIGURATION \
64-
--verbose \
65-
--force
58+
--output /app/build/users-migrations.sql \
59+
--configuration $BUILD_CONFIGURATION
6660

6761
FROM build AS publish
6862
ARG BUILD_CONFIGURATION
@@ -72,6 +66,7 @@ ARG GIT_FILE_VERSION
7266
RUN dotnet publish "./OpenAlprWebhookProcessor.Server.csproj" \
7367
-c $BUILD_CONFIGURATION \
7468
-o /app/publish \
69+
-r linux-musl-x64 \
7570
/p:UseAppHost=false \
7671
/p:PublishSingleFile=false \
7772
-p:GitVersion="$GIT_VERSION" \
@@ -81,9 +76,12 @@ RUN dotnet publish "./OpenAlprWebhookProcessor.Server.csproj" \
8176
FROM base AS final
8277
WORKDIR /app
8378

79+
USER root
80+
RUN apk add --no-cache sqlite
81+
8482
COPY --from=publish /app/publish .
85-
COPY --from=build /app/build/processor-migrator ./processor-migrator
86-
COPY --from=build /app/build/users-migrator ./users-migrator
83+
COPY --from=build /app/build/processor-migrations.sql ./processor-migrations.sql
84+
COPY --from=build /app/build/users-migrations.sql ./users-migrations.sql
8785
COPY --from=build /src/OpenAlprWebhookProcessor.Server/scripts/entrypoint.sh ./
8886

8987
USER root

OpenAlprWebhookProcessor.Server/Features/Alerts/AlertService.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,15 @@ namespace OpenAlprWebhookProcessor.Features.Alerts
88
{
99
public class AlertService : IAlertService, IDisposable
1010
{
11-
private readonly Channel<AlertUpdateRequest> _alertsChannel;
1211
private readonly ChannelWriter<AlertUpdateRequest> _writer;
12+
1313
private readonly ChannelReader<AlertUpdateRequest> _reader;
1414

1515
private bool _disposed = false;
1616

1717
public AlertService()
1818
{
19-
_alertsChannel = Channel.CreateUnbounded<AlertUpdateRequest>();
19+
var _alertsChannel = Channel.CreateUnbounded<AlertUpdateRequest>();
2020
_writer = _alertsChannel.Writer;
2121
_reader = _alertsChannel.Reader;
2222
}
@@ -54,6 +54,8 @@ public void Dispose()
5454

5555
CompleteChannel();
5656
_disposed = true;
57+
58+
GC.SuppressFinalize(this);
5759
}
5860
}
5961
}

OpenAlprWebhookProcessor.Server/Features/Alerts/Commands/AddAlert/AddAlertCommandHandler.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public AddAlertCommandHandler(IUnitOfWork unitOfWork)
1616
_unitOfWork = unitOfWork;
1717
}
1818

19-
public async ValueTask<Unit> Handle(AddAlertCommand command, CancellationToken cancellationToken = default)
19+
public async ValueTask<Unit> Handle(AddAlertCommand command, CancellationToken cancellationToken)
2020
{
2121
var existingAlerts = await _unitOfWork.Alerts.FindAsync(
2222
x => x.PlateNumber == command.Alert.PlateNumber.ToUpper(),

OpenAlprWebhookProcessor.Server/Features/Alerts/Commands/DeleteAlert/DeleteAlertCommandHandler.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public DeleteAlertCommandHandler(IUnitOfWork unitOfWork)
1515
_unitOfWork = unitOfWork;
1616
}
1717

18-
public async ValueTask<Unit> Handle(DeleteAlertCommand command, CancellationToken cancellationToken = default)
18+
public async ValueTask<Unit> Handle(DeleteAlertCommand command, CancellationToken cancellationToken)
1919
{
2020
var alert = await _unitOfWork.Alerts.GetByIdAsync(command.Id, cancellationToken);
2121

OpenAlprWebhookProcessor.Server/Features/Alerts/Commands/TestPushover/TestPushoverCommandHandler.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public TestPushoverCommandHandler(
2121
_alertClient = alertClients.First(x => x is PushoverClient);
2222
}
2323

24-
public async ValueTask<Unit> Handle(TestPushoverCommand command, CancellationToken cancellationToken = default)
24+
public async ValueTask<Unit> Handle(TestPushoverCommand command, CancellationToken cancellationToken)
2525
{
2626
var testPlateGroup = await _unitOfWork.PlateGroups.GetQueryable()
2727
.Include(x => x.PlateImage)

0 commit comments

Comments
 (0)