【发布时间】:2021-02-23 12:34:35
【问题描述】:
我已经编写了一个 DOCKER 文件,它使用一个私有改编的 alpine 图像作为图像,其中包含一个 nginx 服务器。 注意:alpine 使用 zsh,而不是 bash。
我喜欢有一些可用的 shell 别名,当在容器中工作时,当它们丢失时它让我发疯。所以我将一个准备好的小文件复制到 /root/.profile,它可以工作。我可以查看文件及其内容。但是只有当我手动加载文件时才会加载。 ~/.profile 在容器中然后我有可用的别名。
我必须做什么,我的配置文件在我启动容器并连接到它的外壳后会自动加载?
FROM myprivatealpineimage/base-image-php:7.4.13
ARG TIMEZONE
COPY ./docker/shared/bashrc /root/.profile
COPY ./docker/shared/ /tmp/scripts/
RUN chmod +x -R /tmp/scripts/ \
&& /tmp/scripts/set_timezone.sh ${TIMEZONE}\
&& apk update\
&& apk add --no-cache git
RUN install-ext pecl/apcu pecl/imagick pecl/zip pecl/redis
RUN apk add --no-cache --repository http://dl-3.alpinelinux.org/alpine/edge/testing gnu-libiconv
ENV LD_PRELOAD /usr/lib/preloadable_libiconv.so php
WORKDIR /var/www
【问题讨论】:
-
发现不是zsh,而是这里使用的sh。
-
你最后能解决这个问题吗?
-
在下面查看我的答案。您能否确认这是否适合您?
-
我最终在
Dockerfile中添加到PATH并按名称调用该路径中的脚本。 -
你能发布你的解决方案吗?