我在一个名为${APP_NAME}
的Dockerfile中有一个值。它是什么?如果这是bash脚本,我会假设它是某种变量,但尚未在任何地方为其赋值。它是命令行参数吗?如果是这样,当我想用它调用docker-compose
时该如何传递呢?
作为参考,Docker文件如下所示:
version: '2'
services:
nginx:
container_name: ${APP_NAME}_nginx
hostname: nginx
build:
context: ./containers/nginx
dockerfile: Dockerfile
ports:
- "80:80"
- "443:443"
volumes:
- .:/app
links:
- phpfpm
networks:
- backend
phpfpm:
container_name: ${APP_NAME}_phpfpm
hostname: phpfpm
expose:
- "9000"
build:
context: ./containers/php-fpm
dockerfile: Dockerfile
working_dir: /app
volumes:
- .:/app
links:
- mysql
networks:
- backend
mysql:
container_name: ${APP_NAME}_mysql
hostname: mysql
build:
context: ./containers/mysql
dockerfile: Dockerfile
volumes:
- ./storage/mysql:/var/lib/mysql
- ${MYSQL_ENTRYPOINT_INITDB}:/docker-entrypoint-initdb.d
environment:
- MYSQL_DATABASE=${DB_DATABASE}
- MYSQL_ROOT_PASSWORD=${DB_PASSWORD}
ports:
- "33061:3306"
expose:
- "3306"
networks:
- backend
networks:
backend:
driver: "bridge"
实际上,我可能会对docker产生很多疑问,因为我之前从未真正使用过它,因此对Dockerfile语法的引用会有所帮助。
答案 0 :(得分:1)
这意味着您的项目.env文件中可能存在某个位置,其中包含docker compose必需的变量。您可以在官方docker compose文档中找到有关它的更多信息。它说您可以使用.env文件设置环境变量的默认值,Compose会自动寻找该文件。在shell环境中设置的值将覆盖.env文件中设置的值。尝试在此处找到更多信息:https://docs.docker.com/compose/compose-file/#variable-substitution