Commit 71dfbc2b authored by chenshouchao's avatar chenshouchao

Merge branch 'feat-20220608-projectdata' of…

Merge branch 'feat-20220608-projectdata' of http://120.77.149.83/sunyihao/bkunyun into feat-20220608-projectdata
parents a3f0b7c6 917650fa
FROM nginx:latest
COPY ./build /var/www/v3
COPY ./cert /cert
COPY ./nginx/nginx_test_10005.conf /etc/nginx/nginx.conf
RUN \
mkdir -p /var/log/nginx && \
chmod 777 /var/log/nginx && \
touch /var/log/nginx/error.log && \
chmod 777 /var/log/nginx/error.log && \
touch /var/log/nginx/nginx.pid && \
chmod 777 /var/log/nginx/nginx.pid
EXPOSE 10005
ENTRYPOINT ["nginx","-g","daemon off;"]
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAtIx3AYKqrzXgRJJHrUwgNM5vdKOgCHfSzLqZVxU5MpONzD+Y
pbIA9Ykwo9tNSFY6jYC/1Hg5Kamj24mCDOuRr9UX4/GCB+ypV4jTVBLvueNghfd8
cYdAQEC4/Anb4w1Xe5NB5jKTWaC7Usi4kOfaXxtI1mG6uB2oSc3cbPQydT7qPjz8
/k8Ltw0TuXYmTtrqyyCt22f203+vsvJJJ/zCn1wjyvfF/hjcbk+qsClYcTe/YYD2
4ajyZqrMtYGKufHC0gZKvChpVqcRzBktZat9dthO+6m769Y57juG7B4iSCKSE5ef
0IKxKhLITIqII0rHumvTFetaC3jrBtRs2A3pkwIDAQABAoIBAD05SputAxMyClBG
aF7oKx2tCRd86uYkN8vr1Na2YDR528IwqKM7dt7MPD28Pnsynl1glOxILl4l4+Ys
vXiDI16EPLszqLvmMVB5GexvFXKsG42iLEVVL2D6caAp+bIHUqyZdWXJrbTdb9g1
L30X2jGZD3x/HHGVwPzx/XbG4htmfem0sNjfXUo65GJQ5rc7SSRxPeHKVYpEWvGn
7TNjiOFixQI+iC73V1+XkgX/GBzJYVeupFqaHAVxT36DaHSWx10tGUQ8Ia02BgPn
I9ZZyADkMsdrRiqxGoz1bDTZPaZKm2TL7HAtE8GCxq002KKaLfDttL33mtsSG5jY
6FsJaGkCgYEA3Y0kVyX+g6caKaTRC6YGNMxUSWTpY6zmpUPKvoq2z3ZvsF8mTsYD
LdcHiEyyAfBRtULew2ddgTacBHD/Gp91MXRlFAqfXMFVpU1yJkncOw0PlRvF3c9a
qiRQypf7DYxsxGSlxTjB0+3Fw3nEbFwQHCdS6dSoHBpjnir24EAbajkCgYEA0J82
GK4299y1ciUInoxyfiQjwdIrKNN8rAWGDDnu+0O+o8GSzp3G8YNn4tRvWRXQnipc
Rz35XwbiQUk6Ukqcl5YyJRUUtHHjVi7AplctzOEiNNGxITS+umdgBJSg738h/a4H
83Y+UnSPmTRBiMZZn0bGNMMfNiWZrDpbxpgToisCgYBlItItCkYWGUkDK57WH3MD
1SbA3lUAUGR1mu3Jb48mQ52WuMjG+vNmkJt6p/A2nFrgUOdZ8iyoGKK+EEsT/yjD
a6vcq0C2Wfdb32+1dNAZEMxFOAlqSQbNVoifAyPyumDIgl1+G3u33/oAUuzMvnYI
NBdQcOhQ8+b3xAswsXMSWQKBgQDAXj7UrTg0f8i0EyAKirk8RXjPTUvM3o50VLeR
aI5MFOCiQWlsqiH7K09M4tQ10h7G6Yqjiqr6i+9vgeWMYg5Y3P8qIHEyHl4hZwTv
nS23YNVY3Q627tr8KTxpnN91V8ZxE9tzDNJU1/RdscjIJRYY/3rexhlupWc5X6qm
yi44dwKBgQCim/h7SHNXFOubuhOYSZ9s8Z9l7KOJTPq6khEmRXiDLvVMCzuEJSDN
BB9yr5m4V1VE/qCGq45jsBGaOSw1rx+g2T8g0iPkSUpOa7XUGQgVFC7w1aoQlkfO
1wKGQCJPVtODbkyqrkVChdnemdmy5AVfayDq0jCKQ8dkmFTBvu17dg==
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIF7DCCBNSgAwIBAgIQCVCYwDuVY5x4M+xh4B2LgDANBgkqhkiG9w0BAQsFADBZ
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMTMwMQYDVQQDEypS
YXBpZFNTTCBUTFMgRFYgUlNBIE1peGVkIFNIQTI1NiAyMDIwIENBLTEwHhcNMjIw
NTA5MDAwMDAwWhcNMjMwNTMxMjM1OTU5WjAXMRUwEwYDVQQDDAwqLmNsb3VkYW0u
Y24wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC0jHcBgqqvNeBEkket
TCA0zm90o6AId9LMuplXFTkyk43MP5ilsgD1iTCj201IVjqNgL/UeDkpqaPbiYIM
65Gv1Rfj8YIH7KlXiNNUEu+542CF93xxh0BAQLj8CdvjDVd7k0HmMpNZoLtSyLiQ
59pfG0jWYbq4HahJzdxs9DJ1Puo+PPz+Twu3DRO5diZO2urLIK3bZ/bTf6+y8kkn
/MKfXCPK98X+GNxuT6qwKVhxN79hgPbhqPJmqsy1gYq58cLSBkq8KGlWpxHMGS1l
q3122E77qbvr1jnuO4bsHiJIIpITl5/QgrEqEshMiogjSse6a9MV61oLeOsG1GzY
DemTAgMBAAGjggLwMIIC7DAfBgNVHSMEGDAWgBSkjeW+fHnkcCNtLik0rSNY3PUx
fzAdBgNVHQ4EFgQUNNP5yKVtlyy6e+comkKsDusNwJUwIwYDVR0RBBwwGoIMKi5j
bG91ZGFtLmNuggpjbG91ZGFtLmNuMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAU
BggrBgEFBQcDAQYIKwYBBQUHAwIwPgYDVR0gBDcwNTAzBgZngQwBAgEwKTAnBggr
BgEFBQcCARYbaHR0cDovL3d3dy5kaWdpY2VydC5jb20vQ1BTMIGFBggrBgEFBQcB
AQR5MHcwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBPBggr
BgEFBQcwAoZDaHR0cDovL2NhY2VydHMuZGlnaWNlcnQuY29tL1JhcGlkU1NMVExT
RFZSU0FNaXhlZFNIQTI1NjIwMjBDQS0xLmNydDAJBgNVHRMEAjAAMIIBgQYKKwYB
BAHWeQIEAgSCAXEEggFtAWsAdwDoPtDaPvUGNTLnVyi8iWvJA9PL0RFr7Otp4Xd9
bQa9bgAAAYCnXln2AAAEAwBIMEYCIQCOO9Vs04VxDM8yhgw9kh1Mm9bxcPycKYLJ
vg9fWOVnIwIhAOML4pBX4GFmiz5ltRzMBpeZU17TTeXHbQKX71LIcFmmAHcANc8Z
G7+xbFe/D61MbULLu7YnICZR6j/hKu+oA8M71kwAAAGAp15aMwAABAMASDBGAiEA
tzy6cxQMDdOG0RIyfkLzap6+cykg3qJBtr2/b8MA0moCIQCkbYtS7izBtsyh9MZc
Px2JZ++GUREx6N3xDDwwmguujgB3ALc++yTfnE26dfI5xbpY9Gxd/ELPep81xJ4d
CYEl7bSZAAABgKdeWh0AAAQDAEgwRgIhAPLjJg/t39lhqh958EbkQCd1Zd7NkVSY
HcKZ2SKHfPvtAiEAjpATcHNkXNTCzsqf7JFBEOgCwP0HDoqbCiM415PSl9AwDQYJ
KoZIhvcNAQELBQADggEBAEqz3XwL/NvDRScc74TkDkpDMOHrK1j57ccJXs6uheLL
Ukb5D7YQQnadtkFChmCWB+zU6ZC5zwkFtFiHITL1uZlazulGTcKT09QadvdAoZuA
mWuUsb08mkp0XKqgHBaojFNfs6Iwd2N9WP58CWqw1gTRNDHrbZOGGBEIYAUBT1Sa
LANPnq5tTtDw9FksYD8pEmlr+EXUlhgM36WWdt/MUkEaFtKv0+koZv4xHpE9f1gN
U900tP8LXachtdJOtw1JXWuEHwzjI/XLKjORpy80b6xNI4mw0uQHa8wbbuv7iay8
f4SeNNM6RLBP+HzCcC08rNpF6YTgsJcn/uZOjeOlxNU=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFUTCCBDmgAwIBAgIQB5g2A63jmQghnKAMJ7yKbDANBgkqhkiG9w0BAQsFADBh
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD
QTAeFw0yMDA3MTYxMjI1MjdaFw0yMzA1MzEyMzU5NTlaMFkxCzAJBgNVBAYTAlVT
MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxMzAxBgNVBAMTKlJhcGlkU1NMIFRMUyBE
ViBSU0EgTWl4ZWQgU0hBMjU2IDIwMjAgQ0EtMTCCASIwDQYJKoZIhvcNAQEBBQAD
ggEPADCCAQoCggEBANpuQ1VVmXvZlaJmxGVYotAMFzoApohbJAeNpzN+49LbgkrM
Lv2tblII8H43vN7UFumxV7lJdPwLP22qa0sV9cwCr6QZoGEobda+4pufG0aSfHQC
QhulaqKpPcYYOPjTwgqJA84AFYj8l/IeQ8n01VyCurMIHA478ts2G6GGtEx0ucnE
fV2QHUL64EC2yh7ybboo5v8nFWV4lx/xcfxoxkFTVnAIRgHrH2vUdOiV9slOix3z
5KPs2rK2bbach8Sh5GSkgp2HRoS/my0tCq1vjyLJeP0aNwPd3rk5O8LiffLev9j+
UKZo0tt0VvTLkdGmSN4h1mVY6DnGfOwp1C5SK0MCAwEAAaOCAgswggIHMB0GA1Ud
DgQWBBSkjeW+fHnkcCNtLik0rSNY3PUxfzAfBgNVHSMEGDAWgBQD3lA1VtFMu2bw
o+IbG8OXsj3RVTAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0lBBYwFAYIKwYBBQUHAwEG
CCsGAQUFBwMCMBIGA1UdEwEB/wQIMAYBAf8CAQAwNAYIKwYBBQUHAQEEKDAmMCQG
CCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wewYDVR0fBHQwcjA3
oDWgM4YxaHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0R2xvYmFsUm9v
dENBLmNybDA3oDWgM4YxaHR0cDovL2NybDQuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0
R2xvYmFsUm9vdENBLmNybDCBzgYDVR0gBIHGMIHDMIHABgRVHSAAMIG3MCgGCCsG
AQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2VydC5jb20vQ1BTMIGKBggrBgEFBQcC
AjB+DHxBbnkgdXNlIG9mIHRoaXMgQ2VydGlmaWNhdGUgY29uc3RpdHV0ZXMgYWNj
ZXB0YW5jZSBvZiB0aGUgUmVseWluZyBQYXJ0eSBBZ3JlZW1lbnQgbG9jYXRlZCBh
dCBodHRwczovL3d3dy5kaWdpY2VydC5jb20vcnBhLXVhMA0GCSqGSIb3DQEBCwUA
A4IBAQAi49xtSOuOygBycy50quCThG45xIdUAsQCaXFVRa9asPaB/jLINXJL3qV9
J0Gh2bZM0k4yOMeAMZ57smP6JkcJihhOFlfQa18aljd+xNc6b+GX6oFcCHGr+gsE
yPM8qvlKGxc5T5eHVzV6jpjpyzl6VEKpaxH6gdGVpQVgjkOR9yY9XAUlFnzlOCpq
sm7r2ZUKpDfrhUnVzX2nSM15XSj48rVBBAnGJWkLPijlACd3sWFMVUiKRz1C5PZy
el2l7J/W4d99KFLSYgoy5GDmARpwLc//fXfkr40nMY8ibCmxCsjXQTe0fJbtrrLL
yWQlk9VDV296EI/kQOJNLVEkJ54P
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEA2h+f/zQBlO2s+HQbpXS1rTjvKuyFAUKwTO8DxshjOpNNQ0gd
ivRxEaraM37BaKkmq+JhtX+a6dt5+sxxXGTexKVP0X8X8hDn+tqHAiwuUr24ktwU
vg3tjAdbAPi4wbjdYIAJib34MqQ8tq+XxZn9m5iqb0+HfxOfs+hSWval4tmHNESQ
HtbHo6ciRRPMIS7gDj05PLaq4uQsFPp29jeP51l3LlvKBbQrtbH98xIGZFL6qv31
DKrD1uiJE97izLpvqN2RFqkfiv0cTH3YiJca7lJheNzC/T516zcK2MBoSbeYe7no
igG/1eYk1OH2Q6tboc9+KxIK1Giou+7SiNaOtwIDAQABAoIBAFIwgXLBr2jlJ/yU
j4hIUl67qc8kQTfI37KVi3g/MLi1IXNdPJiL5AESvlaSCCG+Pw6cZlHkC8TbyPo6
R+rXLWOuoMVhXO3+9dJ9vkqQyEGwMFjSKdS1XdGaQe27Sq7gUDZY+H8ZAGlgnmn9
/zPbgwa6v1ni/zzgcZhyTXnuH3K672Eok6rU0H//6zQWIhx/dUTsZrXAMt2FRKLH
SQGkHERHHsQEs5pS0qnfuUnFRyuAcXevPSgf6c0CYOeHcVYhIqBIf15cB6fg1g6A
7W4gvtrMTDnGw1MXaiUbscxO3nTyawVadH+tUBT/ctVJtudRZGhKQz/WdVa2CHmB
BnAyUtECgYEA98yiTz5IEvkO+pLTnxhnfjheVJFxX5mP530v+bKcFnfkENwvC65q
AcUnqhQqrttPc9pMJam98+O/xyxKiY0/lxZtqxLqJzAPPxb/itDVcOrj6QewgSOm
QUCpAnMO3afHnSg7LG66eU+/uCSxbS7qm9Pc1K+77080jwWayc7YrucCgYEA4VeT
hjCT+ptsbnWOMt07naWwlCZBugwGQHoUtOR4mLvKJZheL6daM4LeAXtIzLpGav6x
z87E1tLhdNBReCkhLT4jn8LYrz1s+HxAVmI+v6iY2rpR/v8r2clXIGwH8JyMTR8j
bTWl5QmoA9elChgVLvrlZGxQGSJdHUHaeZi+N7ECgYEAxbkVxc83aVQrvIrNqwOp
CNDni+klopeAeMCuODppS5BMfZuDOnnoAhOTq6U9zZoW0qVb3y2K8QFINB/GNe1r
0R3HUhrclXpGoBu0ucoalWgHhRhqoRCWBzkV4mt2cC0BHQhN9w0/Y67blo5IuIsY
DlDFwzuZ5MC5emmJcf/Ha/8CgYBO+tzv+XLEMVlt1bIDTdspQ/uB0W7UAIbobmF3
jWRfU+JkDuVkGmnZCBM7vbQkXV10/tPfm/8NtFflE2aakP/Z1Z+yzR4ZPZRF+3ap
UEHh9vusHgXDNDhwWss4x+R4hsX9+d321wjQH/RNdHWZ9hrmnnVsHzJrvMmaCYzD
da+l4QKBgF7iQghdh1pSbQ8J+nqoAlfnl0y6caEJhU8uUrTpGPGdvfkLq6+k1xto
ORTCsIuksaCkj9XoLU3jZ6jt/GzFAnnQvSPTQaclndWOP+EHTdapkJlt6r87Q6Ep
c4rQPtF8IPcAU1lPQ7qXWPr/s5Sch+TdNpccguQIh8rxpO7kNoNI
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIF6TCCBNGgAwIBAgIQAVabY7t0gl1XHkjo1TrjuDANBgkqhkiG9w0BAQsFADBZ
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMTMwMQYDVQQDEypS
YXBpZFNTTCBUTFMgRFYgUlNBIE1peGVkIFNIQTI1NiAyMDIwIENBLTEwHhcNMjEw
NzEzMDAwMDAwWhcNMjIwNzEzMjM1OTU5WjAXMRUwEwYDVQQDDAwqLmNsb3VkYW0u
aW8wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaH5//NAGU7az4dBul
dLWtOO8q7IUBQrBM7wPGyGM6k01DSB2K9HERqtozfsFoqSar4mG1f5rp23n6zHFc
ZN7EpU/RfxfyEOf62ocCLC5SvbiS3BS+De2MB1sA+LjBuN1ggAmJvfgypDy2r5fF
mf2bmKpvT4d/E5+z6FJa9qXi2Yc0RJAe1sejpyJFE8whLuAOPTk8tqri5CwU+nb2
N4/nWXcuW8oFtCu1sf3zEgZkUvqq/fUMqsPW6IkT3uLMum+o3ZEWqR+K/RxMfdiI
lxruUmF43ML9PnXrNwrYwGhJt5h7ueiKAb/V5iTU4fZDq1uhz34rEgrUaKi77tKI
1o63AgMBAAGjggLtMIIC6TAfBgNVHSMEGDAWgBSkjeW+fHnkcCNtLik0rSNY3PUx
fzAdBgNVHQ4EFgQUKNmwoyvcYxknIeWrGgB17wXD1xswIwYDVR0RBBwwGoIMKi5j
bG91ZGFtLmlvggpjbG91ZGFtLmlvMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAU
BggrBgEFBQcDAQYIKwYBBQUHAwIwPgYDVR0gBDcwNTAzBgZngQwBAgEwKTAnBggr
BgEFBQcCARYbaHR0cDovL3d3dy5kaWdpY2VydC5jb20vQ1BTMIGFBggrBgEFBQcB
AQR5MHcwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBPBggr
BgEFBQcwAoZDaHR0cDovL2NhY2VydHMuZGlnaWNlcnQuY29tL1JhcGlkU1NMVExT
RFZSU0FNaXhlZFNIQTI1NjIwMjBDQS0xLmNydDAJBgNVHRMEAjAAMIIBfgYKKwYB
BAHWeQIEAgSCAW4EggFqAWgAdwApeb7wnjk5IfBWc59jpXflvld9nGAK+PlNXSZc
JV3HhAAAAXqdvbcqAAAEAwBIMEYCIQDbgUtt0UX/SwKc/RVzBoQWUksj4dXdnMfE
WMUbaqYdVgIhAKy+vcX+xm8IZ/YpJfP1+R7xiKaBkLtzgTwxhfUR5615AHYAUaOw
9f0BeZxWbbg3eI8MpHrMGyfL956IQpoN/tSLBeUAAAF6nb23YQAABAMARzBFAiEA
nGcPuCMkeH32PEkVEb2qTnWA87gTMrIEJr8X4iRfqRYCIHrUzK4lTm4x4fFturkm
NaeblQ4RZEQxLmd6Xa/FTllaAHUAQcjKsd8iRkoQxqE6CUKHXk4xixsD6+tLx2jw
kGKWBvYAAAF6nb23BAAABAMARjBEAiAybogxPq7CD6FJQA8sx/9IhSif7YH+fPqO
r5khx0tB/wIgSj6wuEjJdJU5OXnIXQ7xO0OfGQL5tjhXtCTKgJsWos0wDQYJKoZI
hvcNAQELBQADggEBAIzs+SXR6E97fcOcayJjEVHS6WnWsw3fOE985WP5wIWytkFO
MnvTgKbJ1A6z9yKHzqaDDtBMsaNLZlQpgQZ2mcQnWq/+Vr0W39Jh/afmDNnofngU
rrA6Oo32Pu1CYs+geqJMOW6iz3rIZGHjDVHPKN8fy7HlsuWaUc9Pfq6yuzLS4x87
idOlYR0NDRiOo+6xchCGpgtYFcOjLBSxzkLIcxAs2ifIxj7GUz44WVnXzB+PWaFd
642likJEWvt+SObOuVI7O3X/qjjVyCJSB5q5FLCHCUA0IFF8qh9AtB4vYPzvF/eZ
OEvSpC8V9T5jfPzOU6tDf+iOE6azMB4kVNdh7d0=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFUTCCBDmgAwIBAgIQB5g2A63jmQghnKAMJ7yKbDANBgkqhkiG9w0BAQsFADBh
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD
QTAeFw0yMDA3MTYxMjI1MjdaFw0yMzA1MzEyMzU5NTlaMFkxCzAJBgNVBAYTAlVT
MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxMzAxBgNVBAMTKlJhcGlkU1NMIFRMUyBE
ViBSU0EgTWl4ZWQgU0hBMjU2IDIwMjAgQ0EtMTCCASIwDQYJKoZIhvcNAQEBBQAD
ggEPADCCAQoCggEBANpuQ1VVmXvZlaJmxGVYotAMFzoApohbJAeNpzN+49LbgkrM
Lv2tblII8H43vN7UFumxV7lJdPwLP22qa0sV9cwCr6QZoGEobda+4pufG0aSfHQC
QhulaqKpPcYYOPjTwgqJA84AFYj8l/IeQ8n01VyCurMIHA478ts2G6GGtEx0ucnE
fV2QHUL64EC2yh7ybboo5v8nFWV4lx/xcfxoxkFTVnAIRgHrH2vUdOiV9slOix3z
5KPs2rK2bbach8Sh5GSkgp2HRoS/my0tCq1vjyLJeP0aNwPd3rk5O8LiffLev9j+
UKZo0tt0VvTLkdGmSN4h1mVY6DnGfOwp1C5SK0MCAwEAAaOCAgswggIHMB0GA1Ud
DgQWBBSkjeW+fHnkcCNtLik0rSNY3PUxfzAfBgNVHSMEGDAWgBQD3lA1VtFMu2bw
o+IbG8OXsj3RVTAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0lBBYwFAYIKwYBBQUHAwEG
CCsGAQUFBwMCMBIGA1UdEwEB/wQIMAYBAf8CAQAwNAYIKwYBBQUHAQEEKDAmMCQG
CCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wewYDVR0fBHQwcjA3
oDWgM4YxaHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0R2xvYmFsUm9v
dENBLmNybDA3oDWgM4YxaHR0cDovL2NybDQuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0
R2xvYmFsUm9vdENBLmNybDCBzgYDVR0gBIHGMIHDMIHABgRVHSAAMIG3MCgGCCsG
AQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2VydC5jb20vQ1BTMIGKBggrBgEFBQcC
AjB+DHxBbnkgdXNlIG9mIHRoaXMgQ2VydGlmaWNhdGUgY29uc3RpdHV0ZXMgYWNj
ZXB0YW5jZSBvZiB0aGUgUmVseWluZyBQYXJ0eSBBZ3JlZW1lbnQgbG9jYXRlZCBh
dCBodHRwczovL3d3dy5kaWdpY2VydC5jb20vcnBhLXVhMA0GCSqGSIb3DQEBCwUA
A4IBAQAi49xtSOuOygBycy50quCThG45xIdUAsQCaXFVRa9asPaB/jLINXJL3qV9
J0Gh2bZM0k4yOMeAMZ57smP6JkcJihhOFlfQa18aljd+xNc6b+GX6oFcCHGr+gsE
yPM8qvlKGxc5T5eHVzV6jpjpyzl6VEKpaxH6gdGVpQVgjkOR9yY9XAUlFnzlOCpq
sm7r2ZUKpDfrhUnVzX2nSM15XSj48rVBBAnGJWkLPijlACd3sWFMVUiKRz1C5PZy
el2l7J/W4d99KFLSYgoy5GDmARpwLc//fXfkr40nMY8ibCmxCsjXQTe0fJbtrrLL
yWQlk9VDV296EI/kQOJNLVEkJ54P
-----END CERTIFICATE-----
error_log /var/log/nginx/error.log warn;
pid /var/log/nginx/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for" "$upstream_addr"';
access_log /var/log/nginx/access.log main;
sendfile on;
client_max_body_size 100M;
#tcp_nopush on;
server {
listen 10005;
root /var/www;
index index.html index.htm;
resolver 127.0.0.11 valid=10s;
location / {
try_files $uri /v3/index.html;
index /v3/index.html;
#add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
}
location ^~ /v3/ {
try_files $uri /v3/index.html
index /v3/index.html;
}
location ^~ /accounts/ {
set $accountservice "http://account-service:6000";
proxy_pass $accountservice;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location ^~ /uaa/ {
set $authservice "http://auth-service:5000";
proxy_pass $authservice;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location ^~ /intelligroup/ {
set $intelliservice "http://intelligroup-service:8000";
proxy_pass $intelliservice;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location ^~ /vps/ {
set $intellivps "http://intelligroup-vps:10000";
proxy_pass $intellivps;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /zhihu-xg/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_pass https://xg.zhihu.com/;
}
location ^~ /c3app/ {
set $c3app "http://c3-app:6600";
proxy_pass $c3app;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location ^~ /ecc/ {
set $ecc "http://c3-ecc-app:6700";
proxy_pass $ecc;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location ^~ /cpp/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
set $cpp "http://cp-project-app:8801";
proxy_pass $cpp;
}
location ^~ /ip/ {
set $c3ip "http://c3-ip-app:6800";
proxy_pass $c3ip;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location ^~ /angelia/ {
set $angelia "http://angelia:10002";
proxy_pass $angelia;
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location ^~ /message/ {
set $message "http://message-service:10005";
proxy_pass $message;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location ^~ /intellicost/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
set $intellicost "http://intellicost-app:10001";
proxy_pass $intellicost;
}
location ^~ /c3oc/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
set $c3oc "http://c3-oc-app:6602";
proxy_pass $c3oc;
}
location ^~ /c3ce/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
set $c3ce "http://c3-ce-app:6601";
proxy_pass $c3ce;
}
location ^~ /ceadmin/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
set $ceadmin "http://c3-ceadmin-app:7701";
proxy_pass $ceadmin;
}
location ^~ /imapp/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_connect_timeout 4s; #配置点1
proxy_read_timeout 180s; #配置点2,如果没效,可以考虑这个时间配置长一点
proxy_send_timeout 12s; #配置点3
set $imapp "http://im-app:8081";
proxy_pass $imapp;
}
location ^~ /dataset/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
set $dataset "http://dataset-app:7081";
proxy_pass $dataset;
}
location ~ /grafana/(.*) {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
set $grafana "http://grafana:3000";
proxy_pass $grafana;
}
location ^~ /config/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
set $config "http://config:6666";
proxy_pass $config;
}
location ~ /grafana/(.*) {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
set $grafana "http://grafana:3000";
proxy_pass $grafana;
}
location ^~ /wordpress/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
set $wordpress "http://cloudam-wordpress";
#rewrite ^/wordpress/(.*)$ /$1 break;
proxy_pass $wordpress;
}
location ^~ /wp-content/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
set $wordpress "http://cloudam-wordpress";
#rewrite ^/wordpress/(.*)$ /$1 break;
proxy_pass $wordpress;
}
location ^~ /wp-admin/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
set $wordpress "http://cloudam-wordpress";
#rewrite ^/wordpress/(.*)$ /$1 break;
proxy_pass $wordpress;
}
location ^~ /wp-includes/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
set $wordpress "http://cloudam-wordpress";
#rewrite ^/wordpress/(.*)$ /$1 break;
proxy_pass $wordpress;
}
location ^~ /wp-json/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
set $wordpress "http://cloudam-wordpress";
#rewrite ^/wordpress/(.*)$ /$1 break;
proxy_pass $wordpress;
}
location ~ .*\.php$ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
set $wordpress "http://cloudam-wordpress";
#rewrite ^/wordpress/(.*)$ /$1 break;
proxy_pass $wordpress;
}
# Any route containing a file extension (e.g. /devicesfile.js)
location ~ ^.+\..+$ {
try_files $uri =404;
}
}
}
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
"version": "0.1.0", "version": "0.1.0",
"private": true, "private": true,
"proxy": "", "proxy": "",
"homepage": "/v3/",
"dependencies": { "dependencies": {
"@babel/core": "^7.16.0", "@babel/core": "^7.16.0",
"@emotion/react": "^11.9.0", "@emotion/react": "^11.9.0",
...@@ -91,6 +92,11 @@ ...@@ -91,6 +92,11 @@
"start:release-cn": "set \"REACT_APP_ENV=release-cn\" && npm start", "start:release-cn": "set \"REACT_APP_ENV=release-cn\" && npm start",
"start:release-en": "set \"REACT_APP_ENV=release-en\" && npm start", "start:release-en": "set \"REACT_APP_ENV=release-en\" && npm start",
"start": "node scripts/start.js", "start": "node scripts/start.js",
"build:master": "node --max-old-space-size=6144 scripts/build-master.js",
"build:dev-cn": "node --max-old-space-size=6144 scripts/build-dev-cn.js",
"build:dev-en": "node --max-old-space-size=6144 scripts/build-dev-en.js",
"build:release-cn": "node --max-old-space-size=6144 scripts/build-release-cn.js",
"build:release-en": "node --max-old-space-size=6144 scripts/build-release-en.js",
"build": "node scripts/build.js", "build": "node scripts/build.js",
"test": "node scripts/test.js" "test": "node scripts/test.js"
}, },
......
/*
* @Author: 吴永生#A02208 yongsheng.wu@wholion.com
* @Date: 2022-06-10 15:21:13
* @LastEditors: 吴永生#A02208 yongsheng.wu@wholion.com
* @LastEditTime: 2022-06-10 15:21:24
* @FilePath: /bkunyun/scripts/build-dev-cn.js
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
process.env.REACT_APP_ENV = "dev-cn";
const build = require("./build");
build();
/*
* @Author: 吴永生#A02208 yongsheng.wu@wholion.com
* @Date: 2022-06-10 10:18:28
* @LastEditors: 吴永生#A02208 yongsheng.wu@wholion.com
* @LastEditTime: 2022-06-10 15:21:29
* @FilePath: /bkunyun/scripts/build-dev-en.js
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
process.env.REACT_APP_ENV = "dev-en";
const build = require("./build");
build();
/*
* @Author: 吴永生#A02208 yongsheng.wu@wholion.com
* @Date: 2022-06-10 15:21:13
* @LastEditors: 吴永生#A02208 yongsheng.wu@wholion.com
* @LastEditTime: 2022-06-10 15:21:39
* @FilePath: /bkunyun/scripts/build-global.js
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
process.env.REACT_APP_ENV = "global";
const build = require("./build");
build();
/*
* @Author: 吴永生#A02208 yongsheng.wu@wholion.com
* @Date: 2022-06-10 15:21:13
* @LastEditors: 吴永生#A02208 yongsheng.wu@wholion.com
* @LastEditTime: 2022-06-10 15:21:45
* @FilePath: /bkunyun/scripts/build-master.js
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
process.env.REACT_APP_ENV = "master";
const build = require("./build");
build();
/*
* @Author: 吴永生#A02208 yongsheng.wu@wholion.com
* @Date: 2022-06-10 10:18:28
* @LastEditors: 吴永生#A02208 yongsheng.wu@wholion.com
* @LastEditTime: 2022-06-10 15:21:49
* @FilePath: /bkunyun/scripts/build-release-cn.js
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
process.env.REACT_APP_ENV = "release-cn";
const build = require("./build");
build();
/*
* @Author: 吴永生#A02208 yongsheng.wu@wholion.com
* @Date: 2022-06-10 15:21:13
* @LastEditors: 吴永生#A02208 yongsheng.wu@wholion.com
* @LastEditTime: 2022-06-10 15:21:59
* @FilePath: /bkunyun/scripts/build-release-en.js
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
process.env.REACT_APP_ENV = "release-en";
const build = require("./build");
build();
'use strict'; "use strict";
// Do this as the first thing so that any code reading it knows the right env. // Do this as the first thing so that any code reading it knows the right env.
process.env.BABEL_ENV = 'production'; process.env.BABEL_ENV = "production";
process.env.NODE_ENV = 'production'; process.env.NODE_ENV = "production";
// Makes the script crash on unhandled rejections instead of silently // Makes the script crash on unhandled rejections instead of silently
// ignoring them. In the future, promise rejections that are not handled will // ignoring them. In the future, promise rejections that are not handled will
// terminate the Node.js process with a non-zero exit code. // terminate the Node.js process with a non-zero exit code.
process.on('unhandledRejection', err => { process.on("unhandledRejection", (err) => {
throw err; throw err;
}); });
// Ensure environment variables are read. // Ensure environment variables are read.
require('../config/env'); require("../config/env");
const path = require('path'); const path = require("path");
const chalk = require('react-dev-utils/chalk'); const chalk = require("react-dev-utils/chalk");
const fs = require('fs-extra'); const fs = require("fs-extra");
const bfj = require('bfj'); const bfj = require("bfj");
const webpack = require('webpack'); const webpack = require("webpack");
const configFactory = require('../config/webpack.config'); const configFactory = require("../config/webpack.config");
const paths = require('../config/paths'); const paths = require("../config/paths");
const checkRequiredFiles = require('react-dev-utils/checkRequiredFiles'); const checkRequiredFiles = require("react-dev-utils/checkRequiredFiles");
const formatWebpackMessages = require('react-dev-utils/formatWebpackMessages'); const formatWebpackMessages = require("react-dev-utils/formatWebpackMessages");
const printHostingInstructions = require('react-dev-utils/printHostingInstructions'); const printHostingInstructions = require("react-dev-utils/printHostingInstructions");
const FileSizeReporter = require('react-dev-utils/FileSizeReporter'); const FileSizeReporter = require("react-dev-utils/FileSizeReporter");
const printBuildError = require('react-dev-utils/printBuildError'); const printBuildError = require("react-dev-utils/printBuildError");
const measureFileSizesBeforeBuild = const measureFileSizesBeforeBuild =
FileSizeReporter.measureFileSizesBeforeBuild; FileSizeReporter.measureFileSizesBeforeBuild;
...@@ -44,96 +44,98 @@ if (!checkRequiredFiles([paths.appHtml, paths.appIndexJs])) { ...@@ -44,96 +44,98 @@ if (!checkRequiredFiles([paths.appHtml, paths.appIndexJs])) {
} }
const argv = process.argv.slice(2); const argv = process.argv.slice(2);
const writeStatsJson = argv.indexOf('--stats') !== -1; const writeStatsJson = argv.indexOf("--stats") !== -1;
// Generate configuration // Generate configuration
const config = configFactory('production'); const config = configFactory("production");
// We require that you explicitly set browsers and do not fall back to // We require that you explicitly set browsers and do not fall back to
// browserslist defaults. // browserslist defaults.
const { checkBrowsers } = require('react-dev-utils/browsersHelper'); const { checkBrowsers } = require("react-dev-utils/browsersHelper");
checkBrowsers(paths.appPath, isInteractive) function build() {
.then(() => { checkBrowsers(paths.appPath, isInteractive)
// First, read the current file sizes in build directory. .then(() => {
// This lets us display how much they changed later. // First, read the current file sizes in build directory.
return measureFileSizesBeforeBuild(paths.appBuild); // This lets us display how much they changed later.
}) return measureFileSizesBeforeBuild(paths.appBuild);
.then(previousFileSizes => { })
// Remove all content but keep the directory so that .then((previousFileSizes) => {
// if you're in it, you don't end up in Trash // Remove all content but keep the directory so that
fs.emptyDirSync(paths.appBuild); // if you're in it, you don't end up in Trash
// Merge with the public folder fs.emptyDirSync(paths.appBuild);
copyPublicFolder(); // Merge with the public folder
// Start the webpack build copyPublicFolder();
return build(previousFileSizes); // Start the webpack build
}) return build1(previousFileSizes);
.then( })
({ stats, previousFileSizes, warnings }) => { .then(
if (warnings.length) { ({ stats, previousFileSizes, warnings }) => {
console.log(chalk.yellow('Compiled with warnings.\n')); if (warnings.length) {
console.log(warnings.join('\n\n')); console.log(chalk.yellow("Compiled with warnings.\n"));
console.log( console.log(warnings.join("\n\n"));
'\nSearch for the ' + console.log(
chalk.underline(chalk.yellow('keywords')) + "\nSearch for the " +
' to learn more about each warning.' chalk.underline(chalk.yellow("keywords")) +
" to learn more about each warning."
);
console.log(
"To ignore, add " +
chalk.cyan("// eslint-disable-next-line") +
" to the line before.\n"
);
} else {
console.log(chalk.green("Compiled successfully.\n"));
}
console.log("File sizes after gzip:\n");
printFileSizesAfterBuild(
stats,
previousFileSizes,
paths.appBuild,
WARN_AFTER_BUNDLE_GZIP_SIZE,
WARN_AFTER_CHUNK_GZIP_SIZE
); );
console.log( console.log();
'To ignore, add ' +
chalk.cyan('// eslint-disable-next-line') + const appPackage = require(paths.appPackageJson);
' to the line before.\n' const publicUrl = paths.publicUrlOrPath;
const publicPath = config.output.publicPath;
const buildFolder = path.relative(process.cwd(), paths.appBuild);
printHostingInstructions(
appPackage,
publicUrl,
publicPath,
buildFolder,
useYarn
); );
} else { },
console.log(chalk.green('Compiled successfully.\n')); (err) => {
const tscCompileOnError = process.env.TSC_COMPILE_ON_ERROR === "true";
if (tscCompileOnError) {
console.log(
chalk.yellow(
"Compiled with the following type errors (you may want to check these before deploying your app):\n"
)
);
printBuildError(err);
} else {
console.log(chalk.red("Failed to compile.\n"));
printBuildError(err);
process.exit(1);
}
} }
)
console.log('File sizes after gzip:\n'); .catch((err) => {
printFileSizesAfterBuild( if (err && err.message) {
stats, console.log(err.message);
previousFileSizes,
paths.appBuild,
WARN_AFTER_BUNDLE_GZIP_SIZE,
WARN_AFTER_CHUNK_GZIP_SIZE
);
console.log();
const appPackage = require(paths.appPackageJson);
const publicUrl = paths.publicUrlOrPath;
const publicPath = config.output.publicPath;
const buildFolder = path.relative(process.cwd(), paths.appBuild);
printHostingInstructions(
appPackage,
publicUrl,
publicPath,
buildFolder,
useYarn
);
},
err => {
const tscCompileOnError = process.env.TSC_COMPILE_ON_ERROR === 'true';
if (tscCompileOnError) {
console.log(
chalk.yellow(
'Compiled with the following type errors (you may want to check these before deploying your app):\n'
)
);
printBuildError(err);
} else {
console.log(chalk.red('Failed to compile.\n'));
printBuildError(err);
process.exit(1);
} }
} process.exit(1);
) });
.catch(err => { }
if (err && err.message) {
console.log(err.message);
}
process.exit(1);
});
// Create the production build and print the deployment instructions. // Create the production build and print the deployment instructions.
function build(previousFileSizes) { function build1(previousFileSizes) {
console.log('Creating an optimized production build...'); console.log("Creating an optimized production build...");
const compiler = webpack(config); const compiler = webpack(config);
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
...@@ -147,10 +149,10 @@ function build(previousFileSizes) { ...@@ -147,10 +149,10 @@ function build(previousFileSizes) {
let errMessage = err.message; let errMessage = err.message;
// Add additional information for postcss errors // Add additional information for postcss errors
if (Object.prototype.hasOwnProperty.call(err, 'postcssNode')) { if (Object.prototype.hasOwnProperty.call(err, "postcssNode")) {
errMessage += errMessage +=
'\nCompileError: Begins at CSS selector ' + "\nCompileError: Begins at CSS selector " +
err['postcssNode'].selector; err["postcssNode"].selector;
} }
messages = formatWebpackMessages({ messages = formatWebpackMessages({
...@@ -168,26 +170,26 @@ function build(previousFileSizes) { ...@@ -168,26 +170,26 @@ function build(previousFileSizes) {
if (messages.errors.length > 1) { if (messages.errors.length > 1) {
messages.errors.length = 1; messages.errors.length = 1;
} }
return reject(new Error(messages.errors.join('\n\n'))); return reject(new Error(messages.errors.join("\n\n")));
} }
if ( if (
process.env.CI && process.env.CI &&
(typeof process.env.CI !== 'string' || (typeof process.env.CI !== "string" ||
process.env.CI.toLowerCase() !== 'false') && process.env.CI.toLowerCase() !== "false") &&
messages.warnings.length messages.warnings.length
) { ) {
// Ignore sourcemap warnings in CI builds. See #8227 for more info. // Ignore sourcemap warnings in CI builds. See #8227 for more info.
const filteredWarnings = messages.warnings.filter( const filteredWarnings = messages.warnings.filter(
w => !/Failed to parse source map/.test(w) (w) => !/Failed to parse source map/.test(w)
); );
if (filteredWarnings.length) { if (filteredWarnings.length) {
console.log( console.log(
chalk.yellow( chalk.yellow(
'\nTreating warnings as errors because process.env.CI = true.\n' + "\nTreating warnings as errors because process.env.CI = true.\n" +
'Most CI servers set it automatically.\n' "Most CI servers set it automatically.\n"
) )
); );
return reject(new Error(filteredWarnings.join('\n\n'))); return reject(new Error(filteredWarnings.join("\n\n")));
} }
} }
...@@ -199,9 +201,9 @@ function build(previousFileSizes) { ...@@ -199,9 +201,9 @@ function build(previousFileSizes) {
if (writeStatsJson) { if (writeStatsJson) {
return bfj return bfj
.write(paths.appBuild + '/bundle-stats.json', stats.toJson()) .write(paths.appBuild + "/bundle-stats.json", stats.toJson())
.then(() => resolve(resolveArgs)) .then(() => resolve(resolveArgs))
.catch(error => reject(new Error(error))); .catch((error) => reject(new Error(error)));
} }
return resolve(resolveArgs); return resolve(resolveArgs);
...@@ -212,6 +214,8 @@ function build(previousFileSizes) { ...@@ -212,6 +214,8 @@ function build(previousFileSizes) {
function copyPublicFolder() { function copyPublicFolder() {
fs.copySync(paths.appPublic, paths.appBuild, { fs.copySync(paths.appPublic, paths.appBuild, {
dereference: true, dereference: true,
filter: file => file !== paths.appHtml, filter: (file) => file !== paths.appHtml,
}); });
} }
module.exports = build;
/*
* @Author: 吴永生#A02208 yongsheng.wu@wholion.com
* @Date: 2022-06-13 09:56:57
* @LastEditors: 吴永生#A02208 yongsheng.wu@wholion.com
* @LastEditTime: 2022-06-13 09:59:29
* @FilePath: /bkunyun/src/api/api_manager.ts
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
import { BACKEND_API_URI_PREFIX } from "./api_prefix"; import { BACKEND_API_URI_PREFIX } from "./api_prefix";
const RESTAPI = { const RESTAPI = {
API_USER_FETCH: `${BACKEND_API_URI_PREFIX}/accounts/current`, //获取账户信息 API_USER_FETCH: `${BACKEND_API_URI_PREFIX}/accounts/current`, //获取账户信息
// API_PRIVILEGE_LIST: `${BACKEND_API_URI_PREFIX}/routes/privilege/list`, // API_PRIVILEGE_LIST: `${BACKEND_API_URI_PREFIX}/uaa/routes/privilege/list`, // 获取当前用户路由
API_PROJECT_LIST: `${BACKEND_API_URI_PREFIX}/cpp/project/list`, //获取产品下的项目列表 API_PROJECT_LIST: `${BACKEND_API_URI_PREFIX}/cpp/project/list`, //获取产品下的项目列表
API_PROJECT_ADD: `${BACKEND_API_URI_PREFIX}/cpp/project/add`, //新增项目 API_PROJECT_ADD: `${BACKEND_API_URI_PREFIX}/cpp/project/add`, //新增项目
API_PROJECT_UPDATE: `${BACKEND_API_URI_PREFIX}/cpp/project/update`, //新增项目 API_PROJECT_UPDATE: `${BACKEND_API_URI_PREFIX}/cpp/project/update`, //新增项目
...@@ -10,6 +18,8 @@ const RESTAPI = { ...@@ -10,6 +18,8 @@ const RESTAPI = {
API_PROJECT_GET: `${BACKEND_API_URI_PREFIX}/cpp/project/get`, //获取项目信息 API_PROJECT_GET: `${BACKEND_API_URI_PREFIX}/cpp/project/get`, //获取项目信息
API_CPCE_HPCZONE: `${BACKEND_API_URI_PREFIX}/cpp/cpce/hpczone`, //获取计算区列表 API_CPCE_HPCZONE: `${BACKEND_API_URI_PREFIX}/cpp/cpce/hpczone`, //获取计算区列表
API_DATA_FILETOKEN: `${BACKEND_API_URI_PREFIX}/cpp/data/filetoken`, //获取项目目录的filetoken API_DATA_FILETOKEN: `${BACKEND_API_URI_PREFIX}/cpp/data/filetoken`, //获取项目目录的filetoken
}; API_USER_PERMISSION_LIST: `${BACKEND_API_URI_PREFIX}/uaa/routes/privilege/list`,//获取用户包含的权限列表
}
export default RESTAPI; export default RESTAPI;
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* @Author: 吴永生#A02208 yongsheng.wu@wholion.com * @Author: 吴永生#A02208 yongsheng.wu@wholion.com
* @Date: 2022-05-31 10:17:48 * @Date: 2022-05-31 10:17:48
* @LastEditors: 吴永生#A02208 yongsheng.wu@wholion.com * @LastEditors: 吴永生#A02208 yongsheng.wu@wholion.com
* @LastEditTime: 2022-06-01 16:57:23 * @LastEditTime: 2022-06-13 09:59:45
* @FilePath: /bkunyun/src/api/api_prefix.ts * @FilePath: /bkunyun/src/api/api_prefix.ts
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/ */
......
...@@ -10,7 +10,7 @@ function current() { ...@@ -10,7 +10,7 @@ function current() {
function menu() { function menu() {
return request({ return request({
url: "/accounts/menu-mock", url: Api.API_USER_PERMISSION_LIST,
method: "get", method: "get",
}); });
} }
......
/*
* @Author: 吴永生#A02208 yongsheng.wu@wholion.com
* @Date: 2022-06-09 14:52:54
* @LastEditors: 吴永生#A02208 yongsheng.wu@wholion.com
* @LastEditTime: 2022-06-09 14:55:49
* @FilePath: /bkunyun/src/api/routes_api.ts
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
import request from "@/utils/axios/service";
import Api from "./api_manager";
export const menu = () => {
return request({
url: Api.API_PRIVILEGE_LIST,
method: "get",
});
}
...@@ -56,7 +56,7 @@ const MyRouter = observer(() => { ...@@ -56,7 +56,7 @@ const MyRouter = observer(() => {
); );
return ( return (
<BrowserRouter> <BrowserRouter basename={"/v3"}>
<Routes>{setRoutes(routes)}</Routes> <Routes>{setRoutes(routes)}</Routes>
</BrowserRouter> </BrowserRouter>
); );
......
import { useStores } from "@/store/index"; import { useStores } from "@/store/index";
import { elements } from "@/router"; import { elements } from "@/router";
import { current, menu } from "@/api/demo_api"; import { current, } from "@/api/demo_api";
import { product } from "@/api/project_api"; import { product } from "@/api/project_api";
import localStorageKey from "@/utils/localStorageKey"; import localStorageKey from "@/utils/localStorageKey";
import NotFound from "@/views/404"; import NotFound from "@/views/404";
import useMyRequest from "@/hooks/useMyRequest"; import useMyRequest from "@/hooks/useMyRequest";
import { useEffect } from "react"; import { useEffect } from "react";
import { menu } from "@/api/routes_api";
const useMyRouter = () => { const useMyRouter = () => {
const { permissionStore, menuStore, currentProjectStore } = useStores(); const { permissionStore, menuStore, currentProjectStore } = useStores();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment