Comment accéder au contenu sur vos containeurs Docker ?
Comme sur les autres, via (s)ftp.
SFTP
Pourquoi faire ça
Dans la logique **DevOps**, on ne va pas utiliser la connexion sftp pour modifier le code directement en prod, non on a le déploiement automatique et ça sera écrasé.Par contre, les webmasteurs ont surement besoin de modifier ou d’ajouter régulièrement des médias au site. Il ne faut pas les versionner, c’est pour cet usecase qu’on va faire un containeur sftp.
Docker compose
__docker-compose.yml__ ``` version: "2" services: sftp: image: atmoz/sftp volumes: - ./sftp-users.conf:/etc/sftp-users.conf - ./ssh/sshd_config:/etc/ssh/sshd_config - ./ssh/ssh_host_ed25519_key:/etc/ssh/ssh_host_ed25519_key - ./ssh/ssh_host_rsa_key:/etc/ssh/ssh_host_rsa_key - ../example.com/src:/home/example/data ports: - "2233:22" restart: always ``` On utilise l'image **atmoz/sftp**, on va mapper plusieurs fichiers. On expose le port **2233** de l'hôte. C'est sur celui-là qu'on se connectera.sftp-users.conf
example:example_password:33:33:/data
La liste des utilisateurs sous cette forme :
nom utilisateur:mot de passe utilisateur:id_utilisateur (ici apache):groupe utilisateur:répertoire de montage
Quand l’utilisateur se connectera, il verra le répertoire data en premier.
C’est le montage /home/example/data dans le docker-compose.yml qui exposera les fichiers.
ssh/sshd_config
# Secure defaults
# See: https://stribika.github.io/2015/01/04/secure-secure-shell.html
Protocol 2
HostKey /etc/ssh/ssh_host_ed25519_key
HostKey /etc/ssh/ssh_host_rsa_key
Faster connection
See: https://github.com/atmoz/sftp/issues/11
UseDNS no
Limited access
PermitRootLogin no
X11Forwarding no
AllowTcpForwarding no
Force sftp and chroot jail
Subsystem sftp internal-sftp
ForceCommand internal-sftp
ChrootDirectory %h
Enable this for more logs
#LogLevel VERBOSE
C’est dans ce fichier qu’on récupère le nom des clés à mapper.
ssh/ssh_host_ed25519_key
SSH Key #1. On la récupère avec cette commande :
docker cp sftp_container:/etc/ssh/ssh_host_ed25519_key ssh/ssh_host_ed25519_key
ssh/ssh_host_rsa_key
SSH Key #2. On la récupère avec cette commande :
docker cp sftp_container:/etc/ssh/ssh_host_rsa_key ssh/ssh_host_rsa_key
FTP
version: "2"
services:
sftp:
image: stilliard/pure-ftpd
volumes:
- ../example.com/src/:/home/vsftpd/user
environment:
- "FTP_USER_NAME=user"
- "FTP_USER_PASS=password"
- "FTP_USER_HOME=/home/vsftpd/user"
- "PASV_ADDRESS=1.2.3.4"
- "PUBLICHOST=1.2.3.4"
- "FTP_PASSIVE_PORTS=21100:21110"
- "PASV_MAX_PORT=21110"
ports:
- "20-21:20-21"
- "21100-21110:21100-21110"
expose:
- 20
- 21
- 21100
- 21101
- 21102
- 21103
- 21104
- 21105
- 21106
- 21107
- 21108
- 21109
- 21110
restart: always