首页 > 解决方案 > 运行一个 Docker 容器而不是其他容器。码头工人组成

问题描述

Docker-compose.yml:

version: '3'
services:
   psql:
    container_name: docker_db
    build: database/
    image: andrey1981spb/docker_db

 webapp:
     container_name: docker_test
     build: src/
    image: andrey1981spb/docker_test
    depends_on:
      - psql

psql 的 Dockerfile:

FROM postgres:latest

ENV POSTGRES_DB_PORT : "5432"
ENV POSTGRES_USER dreamwhite
ENV POSTGRES_PASSWORD Password2020#
ENV POSTGRES_DB test_psql

EXPOSE 5432

wewapp 的 Dockerfile:

FROM tomcat:9-jre8-alpine

ENV PATH_TOMCAT_USERS /usr/local/tomcat/conf/
ENV PATH_MANAGER /usr/local/tomcat/webapps/manager/
ADD config/tomcat-users.xml  /usr/local/tomcat/conf/tomcat-users.xml
ADD config/context.xml /usr/local/tomcat/webapps/manager/META-INF/context.xml
ADD test.war /usr/local/tomcat/webapps/ROOT.war
EXPOSE 8080
CMD ["catalina.sh","run"]

所有 2 个容器都成功运行。但是容器 docker_db 包含来自 docker_test 的数据。特别是,我通过 docker inspect docker_db 看到了它。它返回 docker_test 的环境变量。并在服务器上为 docker_test 上传环境变量和其他设置(而不是 docker_db)

项目结构:

项目结构

标签: dockerdocker-compose

解决方案


我认为它们两个图像都是从同一个 dockerfile 构建的,因为您没有在服务下指定 dockerile。尝试这个

version: '3'
services:
   psql:
    container_name: docker_db
    build: 
      context: .
      dockerfile: ./database/Dockerfile
    image: andrey1981spb/docker_db

 webapp:
     container_name: docker_test
     build: 
      context: .
      dockerfile: ./src/Dockerfile
    image: andrey1981spb/docker_test
    depends_on:
      - psql


推荐阅读