Skip to content

Commit f826ddc

Browse files
author
bird_egop
committed
start in docker
1 parent fdd2b33 commit f826ddc

File tree

10 files changed

+272
-40
lines changed

10 files changed

+272
-40
lines changed

.idea/.idea.ProjectManager/.idea/dataSources.xml

+12
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Dockerfile

+4
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,15 @@
22
WORKDIR /app
33

44
COPY ./ProjectManager/ProjectManager.csproj ./ProjectManager/ProjectManager.csproj
5+
COPY ./DataAccess/DataAccess.csproj ./DataAccess/DataAccess.csproj
6+
COPY ./BusinessLogic/BusinessLogic.csproj ./BusinessLogic/BusinessLogic.csproj
57

68
# restore only main project, it references everything that is required
79
RUN dotnet restore ./ProjectManager/ProjectManager.csproj
810

911
COPY ./ProjectManager ./ProjectManager
12+
COPY ./DataAccess ./DataAccess
13+
COPY ./BusinessLogic ./BusinessLogic
1014

1115
RUN dotnet publish ./ProjectManager/ProjectManager.csproj -c Release -o out --no-restore
1216

ProjectManager/ApplicationBuilderExtensions.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,14 @@ public static void SetupSwagger(this WebApplicationBuilder builder)
1414
options =>
1515
{
1616
options.EnableAnnotations();
17-
options.CustomSchemaIds(SwaggerTypeNamesProvider.GetSwaggerDisplayedName);
17+
options.CustomSchemaIds(SwaggerNameProvider.GetSwaggerDisplayedName);
1818
options.SwaggerDoc(
1919
"v1",
2020
new OpenApiInfo
2121
{
2222
Version = "v1",
23-
Title = "Akiana AUTH API",
24-
Description = "Akiana AUTH API"
23+
Title = "PM API",
24+
Description = "PM API"
2525
}
2626
);
2727

ProjectManager/SwaggerNameProvider.cs

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
namespace ProjectManager
2+
{
3+
public static class SwaggerNameProvider
4+
{
5+
public static string GetSwaggerDisplayedName(Type type)
6+
{
7+
return BuildDisplayedTypeName(type);
8+
}
9+
10+
private static string BuildDisplayedTypeName(Type type)
11+
{
12+
var prefix = string.Empty;
13+
14+
if (type.DeclaringType is not null)
15+
{
16+
prefix = BuildDisplayedTypeName(type.DeclaringType) + "_";
17+
}
18+
19+
if (!type.IsGenericType) return prefix + type.Name;
20+
21+
var cleanTypeName = type.Name[.. ^2]; // допускаем, что больше 9 generic-параметров в типе не будет
22+
var genericArguments = string.Join("And", type.GenericTypeArguments.Select(BuildDisplayedTypeName));
23+
24+
return $"{prefix}{cleanTypeName}Of{genericArguments}";
25+
26+
}
27+
}
28+
}

ProjectManager/SwaggerTypeNamesProvider.cs

-37
This file was deleted.

certificate/birdegop.crt

+43
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIHijCCBnKgAwIBAgIMdcsMVjBM0v4rwt2yMA0GCSqGSIb3DQEBCwUAMFMxCzAJ
3+
BgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMSkwJwYDVQQDEyBH
4+
bG9iYWxTaWduIEdDQyBSMyBEViBUTFMgQ0EgMjAyMDAeFw0yMjA5MTYyMTUzMjda
5+
Fw0yMzEwMTgyMTUzMjZaMBoxGDAWBgNVBAMTD3d3dy5iaXJkZWdvcC5ydTCCAiIw
6+
DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANt2QUva5XS0j9HGdUChU/fm3KTg
7+
Fzn+8VKkZ+qwM0NBCudAXdUAYrtNcUwRdPKMckUeB+Jy3fs/RyNp0twyKzhl2rtV
8+
kopl4F4oAkRGAs1SrR74zwMWhUKAyVEA5LQKWgIdk3Mt5OCoW7WuCA5G9VYOn1FC
9+
5F1HrFvu+FrPd25oC+cj55Bl3d4as7BM2TmAMtYqBycKrn1vD7ynfW6BV9oys3td
10+
kGjopd3QMUB4i/KxvAV3IhicT9bK42C+/3giZhH/9Hs4honwy1G9h6+Eb5qlny6C
11+
TdfZcIpMqmrA9qpQ6xS7vMnrMGJUotw07pvB/rSyvL+cPwMBv3CjKWMhTTvvfu/I
12+
PxGwfHLU52Fq0Wf3OYWHH7nsGKZw20goQwfImnDUfd6sT10KdS1QKFwOi9ucqwHT
13+
+3THSKHiFD9jmoR1Sw8KjwsKQiPsM4vs6SBDqxv8TIJxTNx4jTndeVbOSYkuhITv
14+
w2rD+i0SWoBMSVY87Bggjaa++u4cTuS287Gy1OCprptlRKxHwkpphRP2ieJ5WsIk
15+
VLmXD9CJ3ccbKJLJT9lTNlm2Gk0BZeZE7ZdH0ucNDSjN/ilUlHIEVZZ8hBufGhXN
16+
h7UQ3pSIx6K+D8ZpYketr311klZuMqphXqG5JtS74mGZ5Eq7lu5UuhTq9GmStayO
17+
/W+6VOnB2ek3FhGXAgMBAAGjggOVMIIDkTAOBgNVHQ8BAf8EBAMCBaAwgZMGCCsG
18+
AQUFBwEBBIGGMIGDMEYGCCsGAQUFBzAChjpodHRwOi8vc2VjdXJlLmdsb2JhbHNp
19+
Z24uY29tL2NhY2VydC9nc2djY3IzZHZ0bHNjYTIwMjAuY3J0MDkGCCsGAQUFBzAB
20+
hi1odHRwOi8vb2NzcC5nbG9iYWxzaWduLmNvbS9nc2djY3IzZHZ0bHNjYTIwMjAw
21+
VgYDVR0gBE8wTTBBBgkrBgEEAaAyAQowNDAyBggrBgEFBQcCARYmaHR0cHM6Ly93
22+
d3cuZ2xvYmFsc2lnbi5jb20vcmVwb3NpdG9yeS8wCAYGZ4EMAQIBMAkGA1UdEwQC
23+
MAAwQQYDVR0fBDowODA2oDSgMoYwaHR0cDovL2NybC5nbG9iYWxzaWduLmNvbS9n
24+
c2djY3IzZHZ0bHNjYTIwMjAuY3JsMGQGA1UdEQRdMFuCD3d3dy5iaXJkZWdvcC5y
25+
dYIYYXV0b2Rpc2NvdmVyLmJpcmRlZ29wLnJ1ghBtYWlsLmJpcmRlZ29wLnJ1gg9v
26+
d2EuYmlyZGVnb3AucnWCC2JpcmRlZ29wLnJ1MB0GA1UdJQQWMBQGCCsGAQUFBwMB
27+
BggrBgEFBQcDAjAfBgNVHSMEGDAWgBQNmMBzf6u9vdlHS0mtCkoMrD7HfDAdBgNV
28+
HQ4EFgQUoiPp6YCU67SiOwexW0B+DAbiHs0wggF8BgorBgEEAdZ5AgQCBIIBbASC
29+
AWgBZgB1AOg+0No+9QY1MudXKLyJa8kD08vREWvs62nhd31tBr1uAAABg0hK4BIA
30+
AAQDAEYwRAIgPZlZgQaVg7JtN8EZ6GCCbhnO6gyPd5g9WliDgkm4KtgCIAjbhxsj
31+
kwyDjWrvfM5LMM1+pj4IGopRzghLfEbkeuXnAHYAb1N2rDHwMRnYmQCkURX/dxUc
32+
EdkCwQApBo2yCJo32RMAAAGDSEre4wAABAMARzBFAiEAkwY2JIXo9mF2mCyTglp9
33+
ljd6LZeCLtgYANW/270akKoCIAWIT/p829JYomDfeHjECKzAc7Q77kVMSmAjawwY
34+
nmhFAHUAs3N3B+GEUPhjhtYFqdwRCUp5LbFnDAuH3PADDnk2pZoAAAGDSErgBwAA
35+
BAMARjBEAiBnIKA++DFfDo7923gtO9R9qR/9Ph120Y0BYxkhUTZGhgIgVzM51W1a
36+
KJNWuvNIEfWC4DkFyiLL3FI/gnrGT0p3j1gwDQYJKoZIhvcNAQELBQADggEBAIq7
37+
guuu98DJC5QLpTiHUI2/k9OBA9LlcE+oKn1NNjTSuKjkWd+7m2ZvjvTk6HG3u75y
38+
Js+jzsW7BFqhc/2EzGgTEAwxOBg5o5pbbskEUV90bbJ7DEFXZt7s5mRVlb65Ewk/
39+
m/wzixRptdPlW9lrn5IiWqeH5Pcil5J80H1PPy94lquVK2VV1UOTXl88DOtLux6n
40+
hrv6qXmG3EPCsJyl1wj47GpQ7/6o5zN90e2Se0JBoNb7uTkp+tXvKNVZrTjpx59f
41+
aIrSsn8IuyPWYSIM50Xfpsq8tF2fg6hJsCdTlruLTChbAeB6jjnNT2/ubFQToFu+
42+
Uap7HP3+xGHjX6Skfew=
43+
-----END CERTIFICATE-----

certificate/birdegop.key

+51
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
-----BEGIN RSA PRIVATE KEY-----
2+
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
51+
-----END RSA PRIVATE KEY-----

docker-compose.yml

+47
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
version: "3"
2+
3+
networks:
4+
birdegop-net:
5+
external: true
6+
7+
services:
8+
9+
backend:
10+
container_name: backend_example
11+
build:
12+
dockerfile: ./Dockerfile
13+
context: ./
14+
environment:
15+
ASPNETCORE_ConnectionStrings__Projects: 'Host=postgres_db;Port=5432;Database=Projects;Username=postgres;Password=root'
16+
ASPNETCORE_ENVIRONMENT: 'Development'
17+
restart: unless-stopped
18+
ports:
19+
- "5000:80"
20+
networks:
21+
- birdegop-net
22+
23+
postgres_db:
24+
container_name: postgres_example
25+
image: "postgres:latest"
26+
environment:
27+
TZ: "Europe/Moscow"
28+
POSTGRES_USER: "postgres"
29+
POSTGRES_PASSWORD: "root"
30+
restart: unless-stopped
31+
volumes:
32+
- /home/egop/pm/postgresdata:/var/lib/postgresql/data
33+
ports:
34+
- '44444:5432'
35+
networks:
36+
- birdegop-net
37+
38+
nginx:
39+
build:
40+
dockerfile: ./nginx.Dockerfile
41+
context: ./
42+
restart: unless-stopped
43+
ports:
44+
- "80:80"
45+
- "443:443"
46+
networks:
47+
- birdegop-net

nginx.Dockerfile

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# задача контейнера запустить Nginx с сертификатами, чтобы он пробрасывал внутрь запросы к конкретным серверам фронта и бэка
2+
FROM nginx:latest
3+
COPY nginx.conf /etc/nginx/nginx.conf
4+
COPY certificate/birdegop.crt /etc/nginx/birdegop.crt
5+
COPY certificate/birdegop.key /etc/nginx/birdegop.key

nginx.conf

+79
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
events{}
2+
http {
3+
include /etc/nginx/mime.types;
4+
5+
server_tokens off;
6+
7+
map $http_upgrade $connection_upgrade {
8+
default upgrade;
9+
'' close;
10+
}
11+
12+
resolver 127.0.0.11 valid=30s;
13+
14+
server {
15+
listen 80;
16+
server_name birdegop.ru;
17+
return 301 https://$server_name$request_uri; # редирект обычных запросов на https
18+
}
19+
20+
server {
21+
listen 443 ssl;
22+
server_name www.birdegop.ru;
23+
ssl_certificate /etc/nginx/birdegop.crt;
24+
ssl_certificate_key /etc/nginx/birdegop.key;
25+
26+
client_max_body_size 50M;
27+
28+
# заголовки для внутренних серверов
29+
proxy_set_header X-Forwarded-Proto $scheme;
30+
proxy_set_header Host $host;
31+
proxy_set_header X-Real-IP $remote_addr;
32+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
33+
34+
proxy_http_version 1.1;
35+
proxy_set_header Upgrade $http_upgrade;
36+
proxy_set_header Connection $http_connection;
37+
38+
index index.html;
39+
40+
if ($request_method = "OPTIONS") {
41+
rewrite ^(.*)$ /opts break;
42+
}
43+
44+
location ^~ /api {
45+
set $upstream backend:80;
46+
rewrite ^/api/(.*)$ /$1 break;
47+
proxy_pass http://$upstream;
48+
proxy_intercept_errors on;
49+
proxy_next_upstream error timeout http_502 http_503 http_504;
50+
error_page 502 =400 /400.json;
51+
}
52+
53+
location ^~ / {
54+
set $upstream frontend:80;
55+
rewrite ^/(.*)$ /$1 break;
56+
proxy_pass http://$upstream;
57+
proxy_intercept_errors on;
58+
proxy_next_upstream error timeout http_502 http_503 http_504;
59+
error_page 502 =400 /400.json;
60+
}
61+
62+
location /400.json {
63+
internal;
64+
add_header Content-Type "application/json";
65+
add_header Access-Control-Allow-Headers "*";
66+
add_header Access-Control-Allow-Methods "*";
67+
add_header Access-Control-Allow-Origin "*";
68+
return 400 '{"error": "Server is down :( Sorry!"}';
69+
}
70+
71+
location /opts {
72+
internal;
73+
add_header Access-Control-Allow-Headers "*";
74+
add_header Access-Control-Allow-Methods "*";
75+
add_header Access-Control-Allow-Origin "*";
76+
return 204;
77+
}
78+
}
79+
}

0 commit comments

Comments
 (0)