我正在尝试使用 docker 容器建立模块化开发环境,其中:
1)我的主机上没有安装 sdks/dev 工具/编译器(那些应该只存在于特定容器中)
2) 在 OSX 上的 GUI 版本中使用我的文本编辑器(Vim、Spacemacs)
这里的主要问题是大多数时候文本编辑器特定的语言插件(如Spacemacs 中的elm 层)需要这些工具才能正常工作。
有什么帮助吗?
最后,对我有用的是使用以下命令在我的 .bash_profile 中设置全局 alias.sh 文件:
grep -q -F 'source ~/.docker-shared/alias.sh' ~/.bash_profile \
|| echo 'source ~/.docker-shared/alias.sh' >> ~/.bash_profile
和
mkdir -p ~/.docker-shared && touch ~/.docker-shared/alias.sh
然后对于每个开发环境,我可以使用 docker-compose 创建包含来自容器的所有命令的 alias.sh 文件:
alias elm-repl='docker-compose run web elm-repl'
当我的 docker-compose.yml 包含以下内容时:
version: "2"
services:
web:
build: .
image: web
ports:
- "8000:8000"
volumes:
- .:/app
- ~/.docker-shared:/shared
entrypoint: ""
command: bash -c "mkdir -p /shared && cp /app/alias.sh /shared"
跑步
docker-compose up web
将设置我的环境和别名。这些别名将在文本编辑器中使用。
在我的情况下,我必须设置 vimrc 和 spacemacs 以使用交互式 shell 才能工作,所以我在我的配置文件中添加了以下几行:
.vimrc:
set shellcmdflag=-ic
.spacemacs:
(setq shell-command-switch "-ic")
这是我的榆树开发环境