我正在阅读docker API并尝试创建一个简单的容器并公开1个端口.
在我的示例中,我有一个应用程序,它侦听容器内的TCP端口9595,我想从外部世界(即容器的主机)端口访问它9090.
在创建容器我有"ExposedPorts": { "9595/tcp: {}" }和"PortBindings": { "9595/tcp": [{ "HostPort": "9090" }] }.
所以,如果我从主机上访问http://container_internal_ip:9595它的工作原理!但是,当我访问时http://localhost:9090,这是我期望使用此端口映射功能,它不起作用...
在跑步的时候,docker port containerID我9595/tcp -> 0.0.0.0:9090应该这意味着,when connecting to any IP on the host, at port 9090, forward to the container in port 9595.
那么,这里有什么问题?为什么我不能连接到9090?
我感谢任何澄清.
我已经使用 asp dotnet 开发了一个 Web 应用程序,目前我在 IIS 上运行它,无论如何我可以在 docker 容器中运行相同的应用程序,
我对 Docker 比较陌生,我玩过一点,我熟悉 docker compose ,所以我想知道我是否可以(dockerize)我开发的应用程序。
我的 Dockerfile 现在看起来像:
#Making a dotnet container
FROM microsoft/dotnet:latest
#Make a directory
WORKDIR /app
#copy dll files and other dependencies
COPY . /app
#dotnet run should run the app
ENTRYPOINT ["DOTNET","RUN"]
Run Code Online (Sandbox Code Playgroud)
据我了解,这会在我的 dotnet 容器中创建一个目录并复制当前文件夹中的文件,应用程序将在 dotnet run 上运行
在我的应用程序套件中,我从源代码构建 Libtiff,然后将其链接到我自己编写的应用程序。Libtiff 的 CMakeLists.txt 文件指定静态库进入库位置 CMAKE_INSTALL_FULL_LIBDIR,由 CMake 的 GNUInstallDirs 选项确定。
当我第一次构建和测试我的应用程序时,我在 Debian 中这样做,并且在此平台上 CMAKE_INSTALL_FULL_LIBDIR 设置为 ${CMAKE_INSTALL_PREFIX}/lib。很好,所以在我自己的应用程序的 CMakeLists.txt 文件中,我告诉它在那里搜索静态 tiff 库。没问题...
现在,我已将相同的构建套件应用于 Red Hat Linux 平台(Pengwin Enterprise for WSL),结果发现此处 CMAKE_INSTALL_FULL_LIBDIR 设置为 ${CMAKE_INSTALL_PREFIX}/lib 64。我检查了CMake 文档,似乎说实际上“lib”或“lib64”的选择是自动确定的并且与平台相关。
那么,在我自己的应用程序的 CMakeLists.txt 文件中,有没有办法找出它在我当前平台上的位置?否则我该如何猜测去哪里寻找图书馆呢?我环顾四周,但找不到保存平台相关字符串的 CMAKE 标准变量,所以我唯一能想到的是:
...但这两种方法看起来都笨拙不雅,肯定有更好的方法。
我是码头工人的新手.我正在使用docker compose来管理容器.
我的目标是让数据库容器持久化或不持久化数据,这可以由其他开发人员在没有很多手动步骤(pg_dump和pg_store等)的情况下提取,以在本地运行他们的开发环境.
我想知道我是否可以构建数据库快照的docker镜像(postgres).这可能吗?如果没有,推荐使用docker的方法是什么?
谢谢.