2017-04-19 55 views
0

还有就是我Dockerfile.bash_profile中不与泊坞窗PHP的图像工作

# https://hub.docker.com/_/php/ 
FROM php:5.5.23-fpm 

USER www-data 

ADD .bash_profile /var/www/.bash_profile 

SHELL ["/bin/bash", "-c"] 

RUN source /var/www/.bash_profile 

再经过容器内置我运行docker exec -it CONTAINER_NAME bash,我没有看到我的别名定义成/var/www/.bash_profile。但如果我手动执行source /var/www/.bash_profile - 一切正常。

同样的问题在这里描述:https://github.com/docker/kitematic/issues/896但没有答案。

+0

你Dockerfile没有''CMD'or和ENTRYPOINT'你不显示你的'泊坞窗run'命令,如'搬运工EXEC '连接到正在运行的容器 – user2915097

回答

3

那是因为那些(即'RUN'和'SHELL')是构建指令。执行docker run时,ENTRYPOINTCOMMAND正在执行。

docker exec然而,只是进入现有容器的名称空间并执行命令。所以在你的情况下,它只是运行bash。这就是为什么你必须再次获取你的个人资料。

UPDATE:

这个片段是从man bash

当一个交互的shell但不是登录shell启动时,bash读取并 /etc/bash.bashrc和执行命令〜 /.bashrc,如果这些文件存在。

所以你的情况,如果你更改文件名~/.bashrc可能工作

+0

Yeap,'docker exec'从用户'www-data'运行'bash'(主目录是'/ var/www')。在这个主目录中,我放置了'.bash_profile'文件。我认为它必须自动来源,不是吗? – Aliance

+0

不一定,它首先取决于您是否已将'/ var/www/www-data'定义为'www-data'用户的主路径,其次是您如何调用bash。阅读上面的更新。 – Boynux

+0

非常伤心,因为答案非常简单!非常感谢!什么工作。 – Aliance