我现在的码头工人。yml-
# This docker-compose file uses '.env' file present in the current directory,
# for database credentials. If you want to change the credentials please
# change the data in '.env'.
# '.env' file might be hidden as dot files are hidden please unhide to see it.
# Know more about '.env' file: https://docs.docker.com/compose/env-file/
version: '3'
services:
postgresdb:
image: postgres:9.5
environment:
POSTGRES_USER: ${ENV_POSTGRES_USER}
POSTGRES_PASSWORD: ${ENV_POSTGRES_PASSWORD}
POSTGRES_DB: ${ENV_POSTGRES_DB}
volumes:
- "../app/volumes/postgres/data:/var/lib/postgresql/data"
# This is python service. It uses python 3.6 as base image.
# It will build this service using the Dockerfile present in current directory
# To modify the values of environment variables please open '.env' file.
# This service will not run until postgresdb service gets started
python-app:
image: python:3.6
build: . # Builds using Dockerfile from current directory
depends_on:
- postgresdb
ports:
- "5001:5001"
tty: true
volumes:
- "../app/volumes/trained_knn_model.clf:/usr/src/app/my-app/trained_knn_model.clf"
- "../app/volumes/XYPickle.pickle:/usr/src/app/my-app/XYPickle.pickle"
environment:
- POSTGRES_USER=${ENV_POSTGRES_USER}
- POSTGRES_PASSWORD=${ENV_POSTGRES_PASSWORD}
- POSTGRES_HOST=${ENV_POSTGRES_HOST}
- POSTGRES_PORT=${ENV_POSTGRES_PORT}
- POSTGRES_DB=${ENV_POSTGRES_DB}
我的码头工人。yml文件包含2个服务。我已经指定postgrasdb服务在python应用程序服务使用dependens\u on
之前启动,但是docker没有按照指定的顺序运行服务。如何让postgrasdb服务在python应用程序服务之前运行?我正在运行docker compose-up--build--remove孤儿
命令。
取决于刚刚保证的数据库服务在web服务之前运行。若要在数据库就绪后运行web服务,请使用wait_for_。sh脚本https://docs.docker.com/compose/startup-order/例如,我有一个docker组合。yml
文件包含两个服务:app
和db
,我想在db
服务就绪后运行containerapp
:
docker撰写。yml
version: "2"
services:
app:
image: employee-jdbc
ports:
- "8080:8080"
networks:
- employee-mysql
depends_on:
- mysqldb
container_name: employee-jdbc
db:
image: mysql:5.7
networks:
- employee-mysql
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=bootdb
container_name: mysqldb
networks:
employee-mysql:
external: true
在Dockerfile中构建雇员-jdbc映像:
Dockerfile
FROM openjdk:8
COPY ./target/*.jar ROOT.jar
COPY wait-for-it.sh /wait-for-it.sh
RUN chmod +x /wait-for-it.sh
ENTRYPOINT ["./wait-for-it.sh","db:3306","--","java","-jar","ROOT.jar"]
等着吧。sh文件可从以下网址下载:https://github.com/vishnubob/wait-for-it
请注意,依赖于
只等待另一个容器启动,而不等待它正在运行的进程启动。在您的案例中可能会发生的事情是,您正在尝试连接到指定端口上的postgres
进程,而该进程仍在启动中。
有两种方法可以解决这种情况-
>
为您的python-app容器指定某种类型的restart子句-您可能会看到您的python-app容器处于失败状态,因此您发布了此问题。失败:如果连接到postgres
容器失败,Python-app服务的docker-compose.yml中的10将重新启动容器多达10次。这将确保您在postgres
容器启动并运行之前给它足够的时间...
使用dockerize这样的外部工具,它允许您在启动容器之前等待其他服务。这本质上是为您提供所需的依赖的行为。
我有两个Maven(GWT)项目,其中一个应该依赖于另一个。我只是添加了依赖项,比如: 这些类被正确引用,我可以在我的其他项目中使用它们。但如果我想触发maven构建,它会抱怨:“无法解析项目的依赖项:找不到工件myGroup:MyArtifact:jar:1.0-SNAPSHOT” 该项目没有jar,因为它是一个GWT Web应用程序。它有一个“战争”档案。我测试了一下论点,尝试了“pom”或“
我有下面的docker-compose,在启动myprogram-app之前,我需要等待jhipster-registry服务启动并接受连接。 我尝试了 healtcheck 方式,遵循官方文档 https://docs.docker.com/compose/compose-file/compose-file-v2/ 但在运行<code>docker compose up</code>时,我遇到了
我面对的是Bean(...)没有资格被所有BeanPostProcess处理。我已经将问题缩小到@Configuration类中的@Bean方法,我认为这是罪魁祸首: 配置类 据我所知,BeanPostProcessor bean创建得相当快,需要过早地实例化MeterRegistry bean,这使得它不合格(因为BeanPostProcessor正在操作尚未注入的bean)。 我在博客上看到一
问题内容: 我有一个发布功能,如下所示: 现在假设在某些时候对Projects进行了更改,结果是上面返回了一个不同的项目,因此Tasks.find将返回其他任务。但是,对项目所做的更改不会重新发布 任务 我已经使用了reactPublish,但事实证明该程序包存在问题(并且也没有任何单元测试)。因此,是否有一种简单的方法可以在项目更改时重新发布此发布功能? 问题答案: 通过调用安装软件包。 添加软
用户和首选项由objectProperty链接。 objectProperty断言需要通过SWRL规则从其他用户方面推断。例如,如果用户有听力困难,则需要将设置为,因此: 这很好用。但是,由于我有其他SWRL规则,这些规则也为相同的用户推断,例如: 我需要的是一个规则,不知怎么的,只有在没有更高的级别已经断言的情况下才会断言偏好。在给定的示例中,即使为true,唯一断言的级别也应该是,因为是其他规
问题内容: 在JFrame中,当我单击“登录”时,我弹出另一个Jframe,即登录窗口。 在执行其他操作之前,如何使主Jframe等待登录Jframe退出? 问题答案: 只需使用模式对话框代替框架即可,这样在关闭对话框之前您无法做其他任何事情 有关说明,请参见http://mindprod.com/jgloss/modal.html;有关代码示例,请参见http://www.java2s.com/