ldap客户端容器可与docker run一起使用,但不适用于docker-compose或docker-stack

时间:2019-02-04 18:35:41

标签: docker-compose ldap docker-stack

案例1:经典docker run

使用env-file

BASE_DN=dc=example,dc=com
URI=ldap://XX.XX.XXX.XXX:389
ROOT_ADDCOUNT=cn=admin,dc=example,dc=com
ROOT_PASSWORD=mypassword

通过:运行docker

docker run --env-file ./env-file -it -d akhilrajmailbox/ldap-client:latest /bin/bash

通过

进入docker
docker exec -it <container_id> bash

==>有效,然后我可以找到我的ldap

案例2:使用docker-compose

使用docker-compose.yml

version: "3"

services:
  ldap_client:
    restart: always
    image: akhilrajmailbox/ldap-client:latest
    environment:
      - 'BASE_DN="dc=example,dc=com"'
      - 'URI="ldap://XX.XX.XXX.XXX:389"'
      - 'ROOT_ADDCOUNT="cn=admin,dc=example,dc=com"'
      - 'ROOT_PASSWORD="mypassword"'

运行docker-compose:

docker-compose up -d

通过

进入docker
docker exec -it <container_id> bash

==>无效,我无法到达我的ldap

案例3:使用docker-stack

具有与上述相同的docker-compose.yml

运行docker-stack:

docker stack deploy --compose-file=docker-compose.yml my_stack

如上所述进入容器

==>无效,我无法到达我的ldap

提示:

  • 在来自composestack的两个容器上,我都得到了环境变量。
  • 看来我无法从他们那里与ldap://XX.XX.XXX.XXX:389取得联系。

1 个答案:

答案 0 :(得分:0)

我尝试重现docker版本2的问题,问题出在您的“ environment:”块中。尝试使用以下格式(避免使用:“”) 示例::使用'BASE_DN=dc=example,dc=com'代替'BASE_DN="dc=example,dc=com"'

version: "2"

services:
  ldap_client:
    restart: always
    image: akhilrajmailbox/ldap-client:latest
    environment:
      - 'BASE_DN=dc=example,dc=com'
      - 'URI=ldap://XX.XX.XXX.XXX:389'
      - 'ROOT_ADDCOUNT=cn=admin,dc=example,dc=com'
      - 'ROOT_PASSWORD=mypassword'

注意::我在yaml文件中尝试了docker版本2。