docker-compose不会覆盖dockerfile环境变量

前端之家收集整理的这篇文章主要介绍了docker-compose不会覆盖dockerfile环境变量前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我试图从我的docker-compose设置基本的postgres信息.容器启动但是当我运行docker-compose时,不会覆盖来自Dockerfile的变量.请帮忙.

  1. FROM mine/debian7
  2. ## START: UPDATES & INSTALLS ###########################################################################################
  3. RUN echo "deb http://apt.postgresql.org/pub/repos/apt/ wheezy-pgdg main" >> /etc/apt/sources.list.d/pgdg.list && \
  4. wget --quiet -O - http://apt.postgresql.org/pub/repos/apt/ACCC4CF8.asc | apt-key add - && \
  5. apt-get update && \
  6. apt-get upgrade && \
  7. apt-get install -y python-software-properties software-properties-common postgresql-9.4 postgresql-client-9.4 postgresql-contrib-9.4 && \
  8. apt-get clean && \
  9. rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
  10. ## END: UPDATES & INSTALLS #############################################################################################
  11. ENV DB_USER_NAME test
  12. ENV DB_PASSWORD test
  13. ENV DB_NAME test
  14. ## START: CONCFIGURATION ###############################################################################################
  15. # start postgres at boot
  16. #RUN echo "/etc/init.d/postgresql start" >> ~/.bashrc
  17. USER postgres
  18. RUN /etc/init.d/postgresql start && \
  19. psql --command "CREATE USER $DB_USER_NAME WITH SUPERUSER PASSWORD '$DB_PASSWORD';" && \
  20. createdb -O $DB_NAME $DB_NAME
  21. RUN echo "host all all 0.0.0.0/0 md5" >> /etc/postgresql/9.4/main/pg_hba.conf
  22. RUN echo "listen_addresses='*'" >> /etc/postgresql/9.4/main/postgresql.conf
  23. VOLUME ["/etc/postgresql","/var/log/postgresql","/var/lib/postgresql"]
  24. #USER root
  25. #RUN update-rc.d postgresql defaults
  26. ## END: CONCFIGURATION #################################################################################################
  27. EXPOSE 5432
  28. CMD service postgresql start && tail -f /var/log/postgresql/postgresql-9.4-main.log

还有我的docker-compose文件

  1. tomcat:
  2. image: clegge/tomcat
  3. ports:
  4. - "8080:8080"
  5. volumes:
  6. - sample.war:/opt/tomcat7/webapps/sample.war
  7. postgres:
  8. build: /Users/clegge/Dockers/docker-postgres-base/
  9. ports:
  10. - "5432:5432"
  11. stdin_open: true
  12. tty: true
  13. environment:
  14. - DB_USER_NAME=legge_crud
  15. - DB_PASSWORD=legge_crud
  16. - DB_NAME=test

我错过了什么?

在Dockerfile中,您可以在RUN语句中使用该环境变量.这些是在构建图像时在构建期间执行的.

当您使用docker run启动容器时,它只会根据您刚刚构建的映像启动容器.此时的图像已存在,并且不再执行RUN语句.

因此,在运行时设置这些环境变量将不起作用.

猜你在找的Docker相关文章