Linux Docker装载仅在本地主机上工作
我想用docker创建挂载。我有一个dotnet应用程序,我想在其中安装带有self-signet ssl证书的certs文件夹。在本地主机上,它工作得很好,但在我的VPS上(我有根权限)却不行 我在远程计算机上的操作系统:Linux Docker装载仅在本地主机上工作,linux,ssl,nginx,docker,.net-core,Linux,Ssl,Nginx,Docker,.net Core,我想用docker创建挂载。我有一个dotnet应用程序,我想在其中安装带有self-signet ssl证书的certs文件夹。在本地主机上,它工作得很好,但在我的VPS上(我有根权限)却不行 我在远程计算机上的操作系统: No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 8.6 (jessie) Release: 8.6 Codename: jessie 只
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"]
我的docker撰写文件:
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
我的结构如下:
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
在我的电脑中:
- /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保存/加载
)
在本地主机上运行docker compose up后,从nginx proxy文件夹运行everything works file,但在远程服务器上,我得到以下信息:
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
和nginx代理(我的docker启动文件夹):
在777之后,我测试了nginx代理文件夹chmod-R和775,但没有任何帮助
问题出在哪里?
谢谢您的时间。您是否尝试过在没有docker compose的情况下手动运行它,以查看发生了什么情况?是的,我已经测试过了。同样的问题。我认为,问题在于远程文件夹的权限,因为在我的mac电脑中,我把它放在主目录中,并且运行良好。是的,当您尝试从不同平台访问证书文件时,文件磁盘格式似乎有问题,例如在共享windows磁盘上的linux主机上运行docker容器。这是我的案子。我通过处理直接在linux主机(非windows共享)文件夹中创建的旧证书解决了此问题。请查看我的答案。您是否尝试在没有docker compose的情况下手动运行它以查看结果?是的,我测试了此项。同样的问题。我认为,问题在于远程文件夹的权限,因为在我的mac电脑中,我把它放在主目录中,并且运行良好。是的,当您尝试从不同平台访问证书文件时,文件磁盘格式似乎有问题,例如在共享windows磁盘上的linux主机上运行docker容器。这是我的案子。我通过处理直接在linux主机(非windows共享)文件夹中创建的旧证书解决了这个问题。请在这里查看我的答案
drwxrwxrwx 2 root root 4096 Jan 25 18:03 certs
-rw-r--r-- 1 root root 883 Jan 25 18:03 docker-compose.yml