Ich verwende GCP aktiv, aber als ich einen Dienst kostengünstig und einfach erstellen wollte, dachte ich, dass Cloud Run + Firebase gut wäre, also habe ich es zusammengefasst. In Bezug auf die Wartbarkeit denke ich, dass der Cloud-Lauf besser ist als der Cloud-Lauf und die Cloud-Funktionen.
Aktivieren Sie zunächst den Dienst in der oben genannten Umgebung. Darüber hinaus ist für Icloud mindestens IAM erforderlich.
Da diesmal Cloud Build verwendet wird, werden die folgenden Berechtigungen an "[email protected]" in IAM erteilt.
--Cloud Admin ausführen
Die Konfiguration setzt Folgendes voraus. Back-End-Entwickler können auf das Repository pushen, und Front-End-Entwickler interessieren sich nicht für das Back-End und denken daran, Cloud Run als API-Server zu verwenden.
Hier befindet sich Firestore in der Konfiguration, aber ich werde es in diesem Artikel nicht behandeln (ich könnte es in einem anderen Artikel schreiben). Wenn Sie nur an eine Verarbeitung auf der Basis von Firestore denken, können Sie "Cloud-Funktionen" verwenden. Angesichts der Verwendung Ihrer eigenen Bibliothek und der Wartbarkeit des Quellcodes waren "Cloud-Funktionen" jedoch unpraktisch. "Cloud Run" ist ausgewählt.
Ich denke, dass die Verzeichnisstruktur auf der Back-End-Seite mindestens wie folgt sein sollte. Sie können nach Bedarf weitere Dateien hinzufügen. Beachten Sie jedoch, dass Sie der unten beschriebenen Docker-Datei eine Verarbeitung hinzufügen müssen.
/root
|-app.py
|-requirements.txt
|-cloudbuild.yaml
'-dockerfile
Wie Sie im Bild unten sehen können, gibt es "Repository erstellen". Klicken Sie also darauf, um es zu erstellen. Wenn Sie die Dreipunktmarke drücken, "SSH-Schlüssel verwalten" und dann "SSH-Authentifizierungsschlüssel registrieren" auswählen, wird ein SSH-Authentifizierungsschlüssel generiert. Dies wird beim Pushing in das Repository verwendet.
Wenn Sie Cloud Build aktiviert haben, können Sie einen Trigger erstellen, indem Sie die Registerkarte Cloud Build-> Trigger auswählen. Die Einstellungen sollten wie folgt aussehen.
"Cloudbuild.yaml" sieht wie folgt aus. Durch Ändern der Ersetzungen können Sie die Einstellungen ändern.
--_ PLATTFORM: Einstellung des Cloud-Ausführungsdiensttyps --_ REGION: Standorteinstellung --_ SERVICE_NAME: Dienstname --_ AUTHENTICATION: Zugriffsberechtigungseinstellung
cloudbuild.yaml
steps:
- name: 'gcr.io/cloud-builders/docker'
id: 'build-docker-image'
args: ['build', '-t', 'gcr.io/$PROJECT_ID/${_SERVICE_NAME}', '.']
- name: 'gcr.io/cloud-builders/docker'
id: 'push-docker-image'
args: ['push', 'gcr.io/$PROJECT_ID/${_SERVICE_NAME}']
- name: 'gcr.io/cloud-builders/gcloud'
id: 'deploy-cloud-run'
args: ['beta', 'run', 'deploy', '${_SERVICE_NAME}', '--image', 'gcr.io/$PROJECT_ID/${_SERVICE_NAME}', '--platform=${_PLATFORM}', '--region', '${_REGION}']
- name: 'gcr.io/cloud-builders/gcloud'
id: 'apply-member-role-cloud-run'
args: ['beta', 'run', 'services', 'add-iam-policy-binding', '${_SERVICE_NAME}', '--region', '${_REGION}', '--platform=${_PLATFORM}', '--member', '${_AUTHENTICATION}', '--role', 'roles/run.invoker']
substitutions:
_PLATFORM: managed # full manage
_REGION: asia-northeast1 # tokyo
_SERVICE_NAME: <_SERVICE_NAME> # service name
_AUTHENTICATION: allUsers #Siehe Übersicht über die Google IAM-Dokumentation
images:
- gcr.io/$PROJECT_ID/${_SERVICE_NAME}
Cloud run Der Inhalt der Image-Datei, die für die Cloud-Ausführung bereitgestellt werden soll, wird von der folgenden Docker-Datei generiert. Der Inhalt wird entsprechend geändert.
dockerfile
# Use the official Python image.
# https://hub.docker.com/_/python
FROM python:3.7
# Copy local code to the container image.
ENV APP_HOME /app
WORKDIR $APP_HOME
# Install production dependencies.
COPY requirements.txt ./
COPY app.py ./
RUN pip install --no-cache-dir -r requirements.txt
# Service must listen to $PORT environment variable.
# This default value facilitates local development.
ENV PORT 8080
# Run the web service on container startup. Here we use the gunicorn
# webserver, with one worker process and 8 threads.
# For environments with multiple CPU cores, increase the number of workers
# to be equal to the cores available.
CMD exec gunicorn --bind :$PORT --workers 1 --threads 8 app:app
Wenn Sie es anschließend in das Repository verschieben, wird es automatisch für "Cloud Run" bereitgestellt. Im Build-Status können Sie dies in der Cloud-Konsole überprüfen.
Firebase(hosting)
Dies ist die Umgebung auf der Front-End-Seite, aber die Verzeichnisstruktur wird nicht speziell beschrieben. Grundsätzlich generiert Vue cli automatisch eine Datei. Ich habe einen Artikel über Vue geschrieben, aber wenn Sie es irgendwie wissen wollen, lesen Sie bitte den folgenden Artikel.
Das Javascript-Framework lautet wie folgt.
Ich habe auch React und Angular.js überprüft, aber persönlich war Vue.js am einfachsten zu erreichen.
Wenn Sie sich nicht besonders für das Design interessieren, ist es besser, die CSS-Beschreibung mit Bootstrap zu reduzieren.
「firebase.json」の「hosting」に「rewrites」を追加する。リクエストは「projectID.web.app/」「projectID.firebaseapp.com/」「カスタムドメイン/」から可能となる(例えば、get)。projectIDはGCPのプロジェクトホーム画面から確認できる。
firebase.json
"hosting": {
// ...
// Add the "rewrites" attribute within "hosting"
"rewrites": [ {
"source": "**", //Alle clientseitigen Anforderungen zulassen
"run": {
"serviceId": "<service name>", //Dienstname(Name des Cloud-Run-Containers)
"region": "us-central1" //Ortseinstellungen
}
} ]
}
Recommended Posts