Déploiment de mon portfolio web sur AWS
Le script suivant fait plusieurs actions:
- Installer et configurer le service Docker
- Installer docker-compose
- Déployer le Nginx de jwilder et le companion let’s encrypt
- Puis déployer l’application
Voici le script Ansible utilisé pour faire le déploiement
- name: Deploy portfolio
hosts: aws
gather_facts: no
become: yes
vars:
email: "tommy@studiowebux.com"
tasks:
- name: Install Docker
yum:
name: docker
state: latest
- name: Start and Enable Docker
shell: |
service docker start
chkconfig docker on
- name: Install docker-compose
shell: |
curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
- name: Deploy Nginx using jwilder
shell: |
docker run --detach \
--restart always \
--name nginx-proxy \
--publish 80:80 \
--publish 443:443 \
--volume /etc/nginx/certs \
--volume /etc/nginx/vhost.d \
--volume /usr/share/nginx/html \
--volume /var/run/docker.sock:/tmp/docker.sock:ro \
jwilder/nginx-proxy
- name: Deploy Nginx using jwilder and let's encrypt
shell: |
docker run --detach \
--name nginx-proxy-letsencrypt \
--restart always \
--volumes-from nginx-proxy \
--volume /var/run/docker.sock:/var/run/docker.sock:ro \
--env "DEFAULT_EMAIL{{ email }}" \
jrcs/letsencrypt-nginx-proxy-companion
# Replace this block to fit your application
- block:
- name: Create mailer directory
file:
path: /opt/mailer/
state: directory
- name: Copy the frontend image to the remote machine for mailer demo
copy:
src: ./mailer/mailer-frontend.tar
dest: /opt/mailer/
- name: Copy the backend image to the remote machine for mailer demo
copy:
src: ./mailer/mailer-backend.tar
dest: /opt/mailer/
- name: Copy the docker-compose for mailer demo
copy:
src: ./mailer/docker-compose.yml
dest: /opt/mailer/
- name: Copy the images to the remote machine for mailer demo
shell: |
docker load -i mailer-frontend.tar
docker load -i mailer-backend.tar
args:
chdir: /opt/mailer/
- name: Create log directory
file:
path: "/srv/JAFSS/nginx/logs/"
state: directory
- name: Launch the mailer demo
shell: docker-compose up -d
args:
chdir: /opt/mailer/
Pour pour déployer l’application web,
ansible-playbook -i inventory main.yml --user ec2-user --private-key ~/Downloads/private.pem
Exemple du fichier inventory/hosts
[aws]
ec2-01-02-03-04.ca-central-1.compute.amazonaws.com
Conclusion
Ce script permet de déployer une/des application(s) avec docker et nginx (de jwilder), vous avez besoins d’une machine EC2 (ou autres) puis l’application sera disponible en quelque clics.