我使用docker compose在docker容器中运行spring boot应用程序。spring boot使用嵌入式tomcat运行。
服务器上有一个带有图像的外部文件夹,我想从一个Spring引导docker容器中访问该文件夹。
在码头工人的房间里。yaml文件定义了以下容器:
nginx和CloudFlare将域重定向到端口8080上的spring应用程序。我想访问这样的图像:https://domainname.com/uploads/imageName.png
使用tomcat,这是在服务器上完成的。xml:
<Context docBase="/opt/uploads" path="/uploads"/>
但这个选项显然不能通过应用程序使用。嵌入tomcat的属性。
这是怎么来的?
我的码头工人。亚马尔:
version: '3.8'
services:
nginx:
container_name: some-nginx
hostname: nginx
image: nginx:1.19.2-alpine
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d
restart: unless-stopped
network_mode: host
mysqldb:
image: mysql:8.0.20
hostname: mysqldb
container_name: cp-mysqldb
environment:
- MYSQL_ROOT_PASSWORD=pass1234
- MYSQL_DATABASE=db_name
- MYSQL_USER=root
- MYSQL_PASSWORD=pass1234
ports:
- "3306:3306"
volumes:
- cp-mysqldb-data:/opt/mysql
restart: unless-stopped
springboot-app:
image: openjdk:8
hostname: cp
container_name: cp-springboot
environment:
- SPRING_DATASOURCE_URL=jdbc:mysql://mysqldb:3306/db_name?autoReconnect=true&useSSL=false&useUnicode=yes&characterEncoding=UTF-8&characterSetResults=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&allowPublicKeyRetrieval=true&serverTimezone=UTC
ports:
- "8080:8080"
depends_on:
- mysqldb
volumes:
- cp-springboot-data:/opt/cp
- ./target/cp-springboot-0.0.1-SNAPSHOT.war:/ROOT.war
command: ["java", "-jar",
"-Dspring.profiles.active=prod",
"ROOT.war"]
restart: always
volumes:
cp-springboot-data: {
}
cp-mysqldb-data: {
}
实际上,这个选项可以通过应用程序使用。嵌入tomcat的属性:
spring.mvc.static-path-pattern=/uploads/**
spring.resources.static-locations=file:/opt/uploads
也许最好使用Tomcat处理docker映像,而不是OpenJDK。
这样,就可以为外部路径设置Tomcat配置
看看这里:https://medium.com/@iamvickyav/deploying-spring-boot-war-in-tomcat-based-docker-2b689b206496
问题内容: 我正在boot2docker 1.3.1下运行。 我有一个Docker容器通过运行Web服务器。 如果我连接到该容器,则可以使用浏览该网站,以便知道服务器正在运行。 我用以下容器运行容器: 它具有以下详细信息: 我以为可以访问,从托管人访问该网站。 这是行不通的。我只是在Chrome中看到“正在连接…”,却一无所获。 我究竟做错了什么? 问题答案: 好吧,愚蠢的我,我在boot2doc
如何从Windows文件资源管理器访问Docker containers文件夹和文件?
问题内容: 我想阻止从外部直接访问docker容器。我使用haproxy,并且只希望访问端口80、443。 我在iptables中添加了以下规则。但是我仍然可以通过不同的端口访问Docker容器。 这可能是由于DOCKER链 我需要创建什么规则来阻止直接访问? 问题答案: 您可以使用命令创建一个网络来连接应用程序和代理,而不必使用IP表来执行此操作。另外,请勿在任何端口上公开应用程序。您应该公开的
问题内容: 我运行基于节点映像的Docker容器(Windows的Docker快速入门终端) 我启动节点客户端(在端口3000上)和节点(基于Express)的服务器(在3009 端口上)。客户端通过AJAX调用访问REST服务器。 它可以完美地从主机运行(客户端访问localhost:3009并返回结果)。我可以拨打:3009,然后再次得到正确的结果。 但是当我构建并运行docker image
tl;如果在Docker容器中运行,一个RestController正确回答,另一个则不正确。 该服务有两个API 和。 它们都是通过docker compose运行的。 返回。 返回一个空的200响应。正如预期的那样。 应该返回一个200响应和一个每次调用API时都会增加的数字。可悲的是,事实并非如此。 在本地运行该服务可以提供预期的结果。 maven spotify插件用于从以下创建图像。 我
问题内容: 我按照此处的说明使用内置Web服务器运行Django,并能够使用成功运行它python manage.py runserver。如果我从Web服务器本地访问127.0.0.1:port,则将显示Django页面,表明它可以正常工作。 我意识到Django网络服务器不是生产服务器,但是对于我来说,测试的重要之处在于能够从外界访问它-即,不是从服务器上的Web浏览器而是从另一台计算机访问它