在 Docker 中运行 FTP、SFTP、SMTP、缓存、LDAP、SSO 和其他服务器

背景

在建立一个新项目时,有时会有一个完整的先决条件列表才能运行该项目,这可能导致我们使用多个外部服务。Docker 非常适合在开发环境中运行本地服务器。在这里,我们将探索docker-compose.yml文件以在 Docker 中设置 FTP、SFTP、SMTP、缓存、LDAP、SSO 服务器和 GUI 客户端。这将是一个快速而基本的解决方法。

FTP/SFTP 服务器

收缩▲   
<span style="color:#000000"><span style="background-color:#fbedbb">version: "3.7"

services:
  ftp:
    image: fauria/vsftpd:latest
    container_name: Ftp
    restart: always
    environment:
      - FTP_USER=adminuser
      - FTP_PASS=adminpass
      - PASV_ADDRESS=127.0.0.1
      - PASV_MIN_PORT=21100
      - PASV_MAX_PORT=21110
    volumes:
      - ftp-data:/home/vsftpd
      - ftp-log-data:/var/log/vsftpd
    ports:
      - 0.0.0.0:20:20
      - 0.0.0.0:21:21
      - "21100-21110:21100-21110"
           
  sftp:
    image: atmoz/sftp:latest
    container_name: Sftp
    restart: always
    command: adminuser:adminpass:1001
    volumes:
      - sftp-data:/home/foo/upload
    ports:
      - 0.0.0.0:2222:22
    
volumes:
  ftp-data:
  ftp-log-data:
  sftp-data:</span></span>

FTP

要从主机使用 FTP,请使用:

  • 主持人127.0.0.1
  • 港口21
  • 用户adminuser
  • 密码adminpass

SFTP

要从主机使用 SFTP,请使用:

  • 主持人127.0.0.1
  • 港口22
  • 用户adminuser
  • 密码adminpass

SMTP 服务器

在这里,我们MailHog用作服务器:

<span style="color:#000000"><span style="background-color:#fbedbb">version: "3.7"

services:

  mailhog:
    image: mailhog/mailhog
    container_name: MailHog
    restart: always
    ports:
      - 1025:1025   # smtp
      - 8025:8025   # ui</span></span>

Ui 将在http://localhost:8025/可用。

从主机使用 PowerShell 进行测试:

要从主机使用服务器,我们需要使用 IP127.0.0.1 和端口1025

缓存服务器

在这里,我们使用 Redis 作为服务器,使用 RedisInsight 作为 UI 客户端。

收缩▲   
<span style="color:#000000"><span style="background-color:#fbedbb">version: "3.7"

services:

  redis:
    image: redis:alpine
    container_name: redis
    restart: always
    command: ["sh", "-c", "redis-server --requirepass \"$REDIS_PASSWORD\""]
    environment:
      - REDIS_PASSWORD=adminpass
    volumes:
      - redis-data:/data/redis
    ports:
      - 6379:6379
 
  redis-ui:
    image: redislabs/redisinsight:1.12.0
    container_name: RedisInsight
    restart: always
    ports:
      - 8001:8001
    
volumes:
  redis-data:</span></span>

用户界面客户端

这将在http://localhost:8001/可用。让我们使用以下命令连接到服务器:

  • 主持人redis
  • 港口6379
  • 用户default
  • 密码adminpass

redis容器中测试:

要从主机使用服务器,我们需要使用 IP127.0.0.1 和端口6379

LDAP 服务器

在这里,我们OpenLDAP用作服务器和phpLDAPadminUI 客户端。

收缩▲   
<span style="color:#000000"><span style="background-color:#fbedbb">version: "3.7"

services:
  openldap:
    image: osixia/openldap:1.5.0
    container_name: openldap
    volumes:
      - openldap-data:/var/lib/ldap
      #- ./data/certificates:/container/service/slapd/assets/certs
      #- ./storage/ldap_config:/etc/ldap/slapd.d
    environment:
      - LDAP_ORGANISATION=example
      - LDAP_DOMAIN=example.org
      - LDAP_ADMIN_PASSWORD=adminpass
      - LDAP_CONFIG_PASSWORD=configpass
      - LDAP_RFC2307BIS_SCHEMA=true
      - LDAP_REMOVE_CONFIG_AFTER_SETUP=true
      - LDAP_TLS_VERIFY_CLIENT=never
      - LDAP_READONLY_USER=true
      - LDAP_READONLY_USER_USERNAME=userro
      - LDAP_READONLY_USER_PASSWORD=userropass
    ports:
      - 389:389
      - 636:636
    networks:
      - openldap
      
  phpldapadmin:
    image: osixia/phpldapadmin:latest
    container_name: phpldapadmin
    hostname: phpldapadmin
    environment: 
      - PHPLDAPADMIN_LDAP_HOSTS=openldap
      - PHPLDAPADMIN_HTTPS=false
    ports: 
      - 8081:80
    depends_on:
      - openldap
    networks:
      - openldap
          
networks:
  openldap:
    name: openldap

volumes:
  openldap-data:</span></span>

phpLDAPadminUI 将在http://localhost:8081/可用。

管理员用户

  • 用户名cn=admin,dc=example,dc=org
  • 密码adminpass

只读用户

  • 用户名cn=userro,dc=example,dc=org
  • 密码userropass

openldap在容器中测试凭据:

要从主机访问服务器,我们需要使用ldap://127.0.0.1:389.

选择

bitnami/openldap可以是另一种选择:

收缩▲   
<span style="color:#000000"><span style="background-color:#fbedbb">version: "3.7"

services:

  openldap-bitnami:
    image: bitnami/openldap:2.6.2
    container_name: openldap-bitnami
    volumes:
      - openldap-bitnami-data:/bitnami/openldap
    environment:
      - LDAP_ROOT=dc=example,dc=org
      - LDAP_ADMIN_USERNAME=admin
      - LDAP_ADMIN_PASSWORD=adminpass
      - LDAP_USERS=user01,user02
      - LDAP_PASSWORDS=password1,password2
    ports:
      - 1389:1389
      - 1636:1636
    networks:
      - openldap-bitnami     

networks:
  openldap-bitnami:
    name: openldap-bitnami
    
volumes:
  openldap-bitnami-data:</span></span>

openldap-bitnami在容器中测试凭据:

要从主机访问服务器,我们需要使用ldap://127.0.0.1:1389.

重要的!

组织明智的数据层次结构可以不同。因此,我们需要按预期设置层次结构。

单点登录服务器

对于 SSO 示例,我们在这里使用keycloak.

收缩▲   
<span style="color:#000000"><span style="background-color:#fbedbb">version: '3.7'

services:
  postgres:
    image: postgres:13
    container_name: keycloak-db
    environment:
      POSTGRES_DB: keycloak
      POSTGRES_USER: keycloak
      POSTGRES_PASSWORD: password
      PGDATA: /var/lib/postgresql/data
    volumes:
      - pgsql-data:/var/lib/postgresql/data
    ports:
      - 5432:5432

  pgadmin:
    image: dpage/pgadmin4:4.18
    container_name: keycloak-pgadmin
    restart: always
    environment:
      PGADMIN_DEFAULT_EMAIL: admin
      PGADMIN_DEFAULT_PASSWORD: secret
      PGADMIN_LISTEN_PORT: 80
    ports:
      - 8087:80
    volumes:
      - pgadmin-data:/var/lib/pgadmin

  mailhog:
    image: mailhog/mailhog:latest
    container_name: keycloak-mail
    ports:
      - 8025:8025

  keycloak:
    image: quay.io/keycloak/keycloak:11.0.3     #jboss/keycloak:11.0.3
    container_name: keycloak
    environment:
      DB_VENDOR: POSTGRES
      DB_ADDR: keycloak-db                      #user service name postgres 
                                                #or container name
      DB_DATABASE: keycloak
      DB_SCHEMA: public
      DB_USER: keycloak
      DB_PASSWORD: password
      KEYCLOAK_USER: admin
      KEYCLOAK_PASSWORD: password
      ROXY_ADDRESS_FORWARDING: "true"
      TZ: UTC
      #KEYCLOAK_DEFAULT_THEME: theme-minimal    #custom theme
      #KEYCLOAK_WELCOME_THEME: theme-minimal
      # Uncomment the line below if you want to specify JDBC parameters. 
      # The parameter below is just an example, and it shouldn't be used 
      # in production without knowledge. It is highly recommended that you 
      # read the PostgreSQL JDBC driver documentation in order to use it.
      #JDBC_PARAMS: "ssl=true"
    ports:
      - 8080:8080
    volumes:
      - keycloak-data:/opt/jboss/keycloak/
    depends_on:
      - postgres
      - mailhog
      
volumes:
  pgsql-data:
  pgadmin-data:
  keycloak-data:</span></span>

用户界面客户端

UI 将在http://localhost:8080/auth/可用,我们需要选择控制台或http://localhost:8080/auth/realms/master/protocol/openid-connect/auth?client_id=security-admin -控制台

管理员用户

  • 用户名admin
  • 密码password
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值