我想用docker创建安装。我有dotnet应用程序,我想在其中安装带有自我signet ssl证书的certs文件夹。在localhost上运行良好,但在我的VPS(我有root权限)上没有。
我在远程机器上的操作系统:
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 8.6 (jessie)
Release: 8.6
Codename: jessie
简单地在应用程序中使用docker文件:
FROM microsoft/dotnet:latest
WORKDIR /app
COPY out .
EXPOSE 5000/tcp 5001/tcp
ENTRYPOINT ["dotnet", "myapp.dll"]
我的码头撰写文件:
version: '2'
services:
# mssql:
# image: iws/mssql
# container_name: mssql-server
# ports:
# - "1433:1433"
nginx-proxy:
image: jwilder/nginx-proxy
container_name: nginx-proxy
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
- ./certs:/etc/nginx/certs
myapp:
image: iws/cestujnakole
container_name: myapp
environment:
- VIRTUAL_HOST=cestujnakole.cz,www.cestujnakole.cz
volumes:
- ./certs:/app/certs
- ../myapp/wwwroot:/app/wwwroot
我有以下结构:
在我的电脑中:
- /Users/me/projects
- nginx-proxy
- docker-compose.yml
- certs
- myapp.pfs
- myapp.key
- etc.
- myapp
- out
- Dockerfile
在我的VPS中:
- /var/www/projects
- nginx-proxy
- docker-compose.yml
- certs
- myapp.pfs
- myapp.key
- etc.
- myapp
- etc.
在我的应用中,我需要阅读certs / myapp.pfs文件。当文件不存在时,应用程序崩溃。
到vps我加载完成的容器(docker save/load
)
在localhost上,所有工作文件,运行docker compose后,从nginx-proxy文件夹,但在远程服务器上,我得到了这个:
docker-compose up --force-recreate cestujnakole
Recreating cestujnakole
Attaching to cestujnakole
cestujnakole | Running Environment: Production
cestujnakole |
cestujnakole | Unhandled Exception: Interop+Crypto+OpenSslCryptographicException: error:2006D080:BIO routines:BIO_new_file:no such file
cestujnakole | at Interop.Crypto.CheckValidOpenSslHandle(SafeHandle handle)
cestujnakole | at Internal.Cryptography.Pal.CertificatePal.FromFile(String fileName, String password, X509KeyStorageFlags keyStorageFlags)
cestujnakole | at System.Security.Cryptography.X509Certificates.X509Certificate..ctor(String fileName, String password, X509KeyStorageFlags keyStorageFlags)
cestujnakole | at Microsoft.AspNetCore.Hosting.KestrelServerOptionsHttpsExtensions.UseHttps(KestrelServerOptions options, String fileName, String password)
cestujnakole | at Microsoft.Extensions.Options.OptionsCache`1.CreateOptions()
cestujnakole | at System.Threading.LazyInitializer.EnsureInitializedCore[T](T& target, Boolean& initialized, Object& syncLock, Func`1 valueFactory)
cestujnakole | at Microsoft.AspNetCore.Server.Kestrel.KestrelServer..ctor(IOptions`1 options, IApplicationLifetime applicationLifetime, ILoggerFactory loggerFactory)
cestujnakole | --- End of stack trace from previous location where exception was thrown ---
cestujnakole | at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
cestujnakole | at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, ServiceProvider provider)
cestujnakole | at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScoped(ScopedCallSite scopedCallSite, ServiceProvider provider)
cestujnakole | at Microsoft.Extensions.DependencyInjection.ServiceProvider.<>c__DisplayClass16_0.<RealizeService>b__0(ServiceProvider provider)
cestujnakole | at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType)
cestujnakole | at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider)
cestujnakole | at Microsoft.AspNetCore.Hosting.Internal.WebHost.EnsureServer()
cestujnakole | at Microsoft.AspNetCore.Hosting.Internal.WebHost.BuildApplication()
cestujnakole | at Microsoft.AspNetCore.Hosting.WebHostBuilder.Build()
cestujnakole | at CykloWeb.Program.Main(String[] args) in /Users/petrtomasek/projects/CykloWeb/Program.cs:line 22
cestujnakole exited with code 139
应用程序中没有此类文件意味着远程PC中不存在证书文件
当我从远程机器文件夹中删除到mount时,会在创建后创建。这很有趣。
这是我的远程结构上的ls- l
commnad:
ls -l
total 16
drwxrwxrwx 4 root root 4096 Jan 25 17:58 myapp
drwxr-xr-x 3 root root 4096 Jan 20 13:02 mysql
drwxr-xr-x 4 root root 4096 Jan 25 16:50 nginx-proxy
和nginx-proxy(我的docker启动文件夹):
drwxrwxrwx 2 root root 4096 Jan 25 18:03 certs
-rw-r--r-- 1 root root 883 Jan 25 18:03 docker-compose.yml
在777之后,我测试了nginx-proxy文件夹chmod -R and 775
,但没有任何帮助。
问题出在哪里? 谢谢你的时间。