我想获取容器名称。
services:
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: my_secret_pw_shh
MYSQL_DATABASE: test_db
MYSQL_USER: devuser
MYSQL_PASSWORD: devpass
ports:
- "9906:3306"
web:
build: ./php-app
container_name: php_web
depends_on:
- db
volumes:
- ./php/:/var/www/html/
ports:
- "8100:80"
stdin_open: true
tty: true
在我的dockerfile php-app中,我想获取php_web
答案 0 :(得分:2)
这是一个可能的解决方法-它实际上并不会自动从Dockerfile内部访问容器的名称-但它允许您在单个位置(.env
文件)中定义该名称,然后访问docker-compose.yml
中的那个变量,甚至将其传递给Dockerfile
,以便它也可以使用它。
以下是解决方法:
在与.env
文件相同的目录中创建一个名为docker-compose.yml
的文件,并在其中写入容器名称:
APP_CONTAINER_NAME="php_web"
按如下所示更改docker-compose.yml文件:
version: "3.8"
services:
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: my_secret_pw_shh
MYSQL_DATABASE: test_db
MYSQL_USER: devuser
MYSQL_PASSWORD: devpass
ports:
- "9906:3306"
web:
build:
context: ./php-app
args:
APP_CONTAINER_NAME: ${APP_CONTAINER_NAME}
container_name: ${APP_CONTAINER_NAME}
depends_on:
- db
volumes:
- ./php/:/var/www/html/
ports:
- "8100:80"
stdin_open: true
tty: true
在php-app/Dockerfile
内,最好在顶部附近,添加以下行:
ARG APP_CONTAINER_NAME
您现在可以在Dockerfile中访问此变量。
例如,要在容器内创建一个名称与容器相同的文件,请执行以下操作:
RUN touch ${APP_CONTAINER_NAME}