Configuration pour un conteneur de Développement
Exemple de configuration pour un conteneur dans un environnement de développement
Exemple
- Cet exemple vient de ma configuration pour le développement de O7CLI.
Répertoire Dockerfiles
- Créer ce répertoire dans le projet
- Si vous avez besoin de plusieurs images, tous les fichiers seront ici
dockerfiles/o7clidev.dockerfile
FROM python:3.10-slim-bullseye
RUN apt update && apt -y upgrade
# Install useful basic packages
RUN apt install -y curl nmap ssh git dnsutils wget unzip xz-utils jq
# Useful Pyhton Lib
RUN pip install pytest coverage pandas openpyxl build requests boto3
# AWS CLI V2 https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html
RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" \
&& unzip awscliv2.zip \
&& bash ./aws/install \
&& rm awscliv2.zip && rm -r aws
# AWS Session Manager plugin for the AWS CLI
RUN curl "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/ubuntu_64bit/session-manager-plugin.deb" -o "session-manager-plugin.deb" \
&& dpkg -i session-manager-plugin.deb \
&& rm session-manager-plugin.deb
RUN mkdir /gito7 && mkdir /keys
COPY *.sh /root/scripts/
COPY .bashrc /root
WORKDIR /gito7
CMD ["/bin/bash"]
dockerfiles/.bashrc
export PS1='[\w]> '
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls --color=auto'
alias e='env | sort'
alias p='python'
alias df='diff'
alias ct='coverage run -m unittest discover -v tests && coverage report && coverage html'
alias cl='pylint src/ && echo $?'
alias gs='git status'
alias dc='docker-compose'
alias d='docker'
alias setenv='source setenv.sh'
export PATH=/o7cli/scripts:/root/scripts:$PATH
export PYTHONPATH=/o7cli/src
echo 'Quick Command:'
echo ' ct: Full Unit Test & Coverage'
echo ' cl: Lint all source file'
dockerfiles/setenv.sh Permet d’avoir plusieurs alias ou raccourcis dans votre environnement.
#!/usr/bin/env bash
# Show env vars
grep -v '^#' .env
# Export env vars
export $(grep -v '^#' .env | xargs)
Docker Compose
- Dans le répertoire principal du projet
- Nous allons mettre un fichier docker-compose
docker-compose.yml
version: '3'
services:
o7d:
build:
context: .\dockerfiles
dockerfile: o7clidev.dockerfile
image: o7clidev
stdin_open: true
tty: true
environment:
- APIKEY=123qwerty
volumes:
- C:\temp\download:/download
- C:\temp\gito7:/gito7
- ~/.aws:/root/.aws
- ~/.ssh:/root/.ssh
command: bash
# On peut ajouter au besoin
pg11:
image: 'postgres:11.4-alpine'
environment:
- POSTGRES_PASSWORD=baconbacon
ports:
- '5432:5432'
volumes:
- C:\temp\postgres11\data:/var/lib/postgresql/data
Commandes
# Pour Construire l'image
docker compose build o7d
# Pour démarrer le conteneur de Dev en mode Shell
docker compose run --rm o7d bash
# Pour Permettre que les port soit accessible en mode Shell
docker compose run --service-ports --rm o7d bash
FIN