我正在尝试运行一个运行docker-compose的SpringBoot项目。我从df['IP']=df['A'].str.findall(r'(?:\d{1,3}\.)+(?:\d{1,3})').str[0]
df
Out[246]:
A IP
0 linux_test (dns-1-intern) 10.10.10.250, Berlin_DC 10.10.10.250
并且我正在构建项目并使用以下命令运行它
docker-compose up
我一直遇到这些错误:
mvn clean package -DskipTests && mvn spring-boot:run
Error processing condition on org.springframework.boot.autoconfigure.security.oauth2.client.OAuth2RestOp erationsConfiguration$RequestScopedConfiguration
在docker-compose文件中,环境变量的值在环境部分中定义。
Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'OAUTH_CLIENTID' in value "${OAUTH_CLIENTID}"
这是application.yml的样子:
environment:
- RABBIT_HOST=rabbitstomp
- RABBIT_USER=guest
- RABBIT_PASS=user
- MONGO_HOST=mongodb://localhost:27017
- OAUTH_CLIENTID=nz-kek
- OAUTH_CLIENT_SECRET=DzXZxeOZOJHFZIUhObSpsne
- SSO_HOST=https://webweb.com
- CORS_HOSTS=HOST1,HOST2
- SES_HOST=ses
- SES_PORT=6000
- REDIS_HOST=localhost
- REDIS_PORT=6379
因此,当在没有docker-compose的情况下运行项目时,我应该将这些值放入application.yml吗?
我也尝试过 spring.data.mongodb:
database: ${DB_NAME} #notificationdb
uri: ${MONGO_HOST}
security:
oauth2:
resource:
jwk:
key-set-uri: ${auth-server:${SSO_HOST}}/keys
token-info-uri: ${auth-server:${SSO_HOST}}/userinfo
client:
client-id: ${OAUTH_CLIENTID}
client-secret: ${OAUTH_CLIENT_SECRET}`
,但是我不确定使用mvn spring-boot:run -Dspring-boot.run.arguments=--path.to.value=value1
这样的变量的路径应该如何
答案 0 :(得分:1)
Spring支持通过PlaceholderConfigurerSupport在配置中提供默认值。默认值为:
之后的值。对于您的情况,您应该写:
client-id: ${OAUTH_CLIENTID:yourDevelopmentDefaultClientID}
如果使用@Value
批注来注入值,则SpEL支持使用类型为#{someExpression}
的表达式来处理更复杂的情况。
更新:
就您而言,我相信您正在颠倒变量的位置。正确的应该是:
key-set-uri: ${SSO_HOST:auth-server}/keys
这是什么意思:首先,它将尝试使用SSO_HOST
环境变量,该变量通过docker-compose提供给容器。如果没有将此变量提供给进程,Spring将使用auth-server
作为服务器的地址。在我看来,此地址仅在docker-compose网络内部可见,因此,如果您在此网络外部运行应用程序,则auth-server
地址将不可见。您知道认证服务器在哪里吗?是另一个Docker容器吗?它在本地主机上运行吗?
答案 1 :(得分:0)
在docker中传递环境变量作为对象而不是列表:
environment:
RABBIT_HOST: rabbitstomp
RABBIT_USER: guest
RABBIT_PASS: user
MONGO_HOST: mongodb://localhost:27017
OAUTH_CLIENTID: nz-kek
OAUTH_CLIENT_SECRET: DzXZxeOZOJHFZIUhObSpsne
SSO_HOST: https://webweb.com
CORS_HOSTS: HOST1,HOST2
SES_HOST: ses
SES_PORT: 6000
REDIS_HOST: localhost
REDIS_PORT: 6379`