diff --git a/Andrew_Bulakh/07.Docker/README.md b/Andrew_Bulakh/07.Docker/README.md index adbe3dd84..a747e521e 100644 --- a/Andrew_Bulakh/07.Docker/README.md +++ b/Andrew_Bulakh/07.Docker/README.md @@ -36,7 +36,7 @@ Dockerfile File app.py ```bash - from flask import Flask + from flask import Flask app = Flask(__name__) @app.route('/') diff --git a/Andrew_Bulakh/08.DockerCompose/HomeworkAssigment1/1.PNG b/Andrew_Bulakh/08.DockerCompose/HomeworkAssigment1/1.PNG new file mode 100644 index 000000000..ae1618888 Binary files /dev/null and b/Andrew_Bulakh/08.DockerCompose/HomeworkAssigment1/1.PNG differ diff --git a/Andrew_Bulakh/08.DockerCompose/HomeworkAssigment1/2.PNG b/Andrew_Bulakh/08.DockerCompose/HomeworkAssigment1/2.PNG new file mode 100644 index 000000000..79708d18e Binary files /dev/null and b/Andrew_Bulakh/08.DockerCompose/HomeworkAssigment1/2.PNG differ diff --git a/Andrew_Bulakh/08.DockerCompose/HomeworkAssigment1/README.md b/Andrew_Bulakh/08.DockerCompose/HomeworkAssigment1/README.md new file mode 100644 index 000000000..cf7d15722 --- /dev/null +++ b/Andrew_Bulakh/08.DockerCompose/HomeworkAssigment1/README.md @@ -0,0 +1,35 @@ +# 07.Docker Compose + +## Homework Assignment 1: Docker Compose for Application Stacks +docker-compose.yaml +```bash +services: + db: + image: mariadb:latest + volumes: + - db_data:/var/lib/mysql + restart: always + environment: + MYSQL_ROOT_PASSWORD: 123456 + MYSQL_DATABASE: wordpress + MYSQL_USER: andrew + MYSQL_PASSWORD: 123456 + wordpress: + depends_on: + - db + image: wordpress:latest + ports: + - "8000:80" + volumes: + - wordpress_modules:/var/www/html/modules + - wordpress_profiles:/var/www/html/profiles + - wordpress_themes:/var/www/html/themes + - wordpress_sites:/var/www/html/sites + restart: always +volumes: + db_data: + wordpress_modules: + wordpress_profiles: + wordpress_themes: + wordpress_sites: +``` diff --git a/Andrew_Bulakh/08.DockerCompose/HomeworkAssigment2/3.PNG b/Andrew_Bulakh/08.DockerCompose/HomeworkAssigment2/3.PNG new file mode 100644 index 000000000..f4c071669 Binary files /dev/null and b/Andrew_Bulakh/08.DockerCompose/HomeworkAssigment2/3.PNG differ diff --git a/Andrew_Bulakh/08.DockerCompose/HomeworkAssigment2/4.PNG b/Andrew_Bulakh/08.DockerCompose/HomeworkAssigment2/4.PNG new file mode 100644 index 000000000..9793862ff Binary files /dev/null and b/Andrew_Bulakh/08.DockerCompose/HomeworkAssigment2/4.PNG differ diff --git a/Andrew_Bulakh/08.DockerCompose/HomeworkAssigment2/5.PNG b/Andrew_Bulakh/08.DockerCompose/HomeworkAssigment2/5.PNG new file mode 100644 index 000000000..9ff0d132b Binary files /dev/null and b/Andrew_Bulakh/08.DockerCompose/HomeworkAssigment2/5.PNG differ diff --git a/Andrew_Bulakh/08.DockerCompose/HomeworkAssigment2/README.md b/Andrew_Bulakh/08.DockerCompose/HomeworkAssigment2/README.md new file mode 100644 index 000000000..e866ab2d6 --- /dev/null +++ b/Andrew_Bulakh/08.DockerCompose/HomeworkAssigment2/README.md @@ -0,0 +1,108 @@ +## Homework Assignment 1: Docker build automation (github action) + +Dockerfile +```bash +FROM python:3.10-slim AS builder + +COPY requirements.txt . +RUN pip install --no-cache-dir -r requirements.txt + +COPY app.py . + +FROM python:3.10-slim + +COPY --from=builder /usr/local/lib/python3.10/site-packages /usr/local/lib/python3.10/site-packages + +COPY app.py . + +EXPOSE 8000 + +CMD ["python", "app.py"] +``` + +app.py +```bash +from http.server import BaseHTTPRequestHandler, HTTPServer + +class SimpleHandler(BaseHTTPRequestHandler): + def do_GET(self): + self.send_response(200) + self.send_header("Content-type", "text/html") + self.end_headers() + self.wfile.write(b"Hello, world!") + +def run(server_class=HTTPServer, port=8000): + server_address = ('', port) + httpd = server_class(server_address, SimpleHandler) + print(f'Serving on port {port}') + httpd.serve_forever() + +if __name__ == "__main__": + run() +``` + +requirements.txt +```bash +flask +cython +``` + +[Workflow](https://github.com/AndrewBulah/DockerCompose1/blob/main/.github/workflows/build-and-publich.yaml) +```bash +name: Build and Push Docker Image + +on: + push: + branches: + - main + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + + - name: Log in to Docker Hub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + - name: Build and push + id: docker_build + run: | + docker build -t andrewfreak/my_app:${{ github.sha }} -f second/Dockerfile second/ + docker push andrewfreak/my_app:${{ github.sha }} + + - name: Notify Slack (Success) + uses: slackapi/slack-github-action@v1.22.0 + with: + payload: | + { + "text": "Docker image ** is successfully pushed!", + "channel": "C088BKGQ92T" + } + env: + SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} + + notify_failure: + needs: build + if: failure() + runs-on: ubuntu-latest + steps: + - name: Notify Slack (Failure) + uses: slackapi/slack-github-action@v1.22.0 + with: + payload: | + { + "text": "Failed to build or push Docker image **.", + "channel": "C088BKGQ92T" + } + env: + SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} + ```