[GO] Ich war in Schwierigkeiten, weil sich das Verhalten des Docker-Containers nicht geändert hat

Einführung

Selbst wenn ich den Code geändert habe, hat sich das Verhalten der App im Container nicht geändert, was ein Problem war. Dies ist ein Memo darüber, wie man damit umgeht. (Es ist nicht das System, auf dem der Cache funktioniert hat)

Zuerst Abhilfe schaffen

Die in der Docker-Datei erstellte "App" (Ausführungsdatei) wurde von der "App" im lokalen Verzeichnis der in "docker-compose.yml" festgelegten Volumes überschrieben. Deshalb habe ich es gelöst, indem ich es so geändert habe, dass es nicht übermäßig montiert wird.

Problem

  1. Es gibt eine Golang-App, die im Docker-Container erstellt wurde
  2. Ich versuche die App in der Docker-Datei zu kaufen, um die App zu starten.
  3. Bearbeiten und speichern Sie beispielsweise main.go.
  4. Erstellen Sie die App neu und starten Sie sie mit "docker-compose up -d --build"
  5. Das? Es hat sich nicht geändert! ?? (Build läuft)
  6. Versuchen Sie "Docker-Compose Build --no-Cache", aber das gleiche ...

Verzeichnisstruktur ↓

myapp
 - docker-compose.yml
 - Go
    - Dockerfile
    - main.go
    - app

Teilcode-Auszug ↓

Dockerfile


FROM golang:1.12.12-alpine3.9 AS build

ENV GOPATH $GOPATH:/go
ENV PATH $PATH:$GOPATH/bin
ENV GO111MODULE=on

hogehoge

COPY . /go/src/app
WORKDIR /go/src/app
RUN go build -o app main.go
CMD ["./app"]

docker-compose.yml


version: '2'
services:
  app:
    build:
      context: ./Go
      dockerfile: Dockerfile
    volumes:
      - "./Go:/go/src/app"
    container_name: go_app
    ports:
      - "127.0.0.1:8080:8080"
    tty: true
    restart: always

Ursache

Die Ursache war die lokale App, die ich erstellen wollte. Die Befehlsausführungsreihenfolge lautet "RUN → Volumes → CMD", und die im Container integrierte "App" wurde mit der lokalen "App" überschrieben.

Ansatz

Mounten Sie keine zusätzlichen Dateien

In diesem Fall mussten nur die Sitzungsinformationen beibehalten und gespeichert werden, sodass diese eine Datei für die Freigabe der Datei ausreichte.

docker-compose.yml


    volumes:
      - "./Go/sessions:/go/src/app/sessions"

Schließen Sie Dateien aus, die nicht freigegeben werden sollen

Während der Entwicklung ist es bequemer, den Quellcode bereitzustellen und zu bearbeiten. Daher dachte ich, es wäre eine gute Idee, nicht nur "App" zu teilen. (So schließen Sie einige beim Mounten von Volume mit Docker aus)

abschließend

Erstens geschah dies, während ich Codeänderungen vornahm, um die Sitzungsinformationen dauerhaft zu machen. (Es gibt auch einen Unterschied zwischen dem Produktionsserver und dem Entwicklungsserver.) Schließlich werden wir zur Datenbankverwaltung übergehen. (Von welchem)

Recommended Posts

Ich war in Schwierigkeiten, weil sich das Verhalten des Docker-Containers nicht geändert hat
Ich hatte Probleme, weil die Zeichenfolge im PDF seltsam war
Die Geschichte des Debuggens in der lokalen Umgebung, weil die Kompilierung mit Read the Docs nicht funktioniert hat
Das Ergebnis der Analyse von Kants "Urteilskritik", das ich überhaupt nicht gelesen habe, war interessant
Ich habe den Inhalt des Docker-Volumes überprüft
Überprüfen Sie das Verhalten des Zerstörers in Python
Ändern Sie in Python das Verhalten der Methode je nach Aufruf
Ändern Sie die Schriftgröße der Legende in df.plot
Verhalten bei Container Trainable = False in Keras
Geben Sie in stdin den laufenden Docker-Container ein
Fügen Sie Python3 in den Docker-Container von Amazon Linux2 ein
Ich werde zusammenfassen, was ich gerne getan habe, um aus dem Zustand herauszukommen, in dem ich den Buchstaben D von Docker nicht einmal kenne
Zu dem Problem, dass der Inhalt von Python print in Docker-Protokollen nicht sichtbar ist
Hier ist eine, ich werde die mit "künstlicher Intelligenz" ausgestatteten Anwendungen zusammenfassen, an denen ich interessiert war
Was ich getan habe, als ich wütend war, es mit der Option enable-shared einzufügen
Code-Memo, das in Schwierigkeiten war, weil es nicht auf der Website discord.py aufgeführt war
[Wahrscheinlichkeit] Ich werde erklären, weil das Roboterproblem von Center 2020 Mathematics 1 ・ A interessant war.
Ändern Sie die Zeitzone in Oracle Database Docker
Die Leistung von PHP war besser als ich erwartet hatte
Den Inhalt der Daten in Python nicht kennen
Die Geschichte, dass yapf nicht mit vscode funktioniert hat
Belüftung ist wichtig. Was ich getan habe, um die CO2-Konzentration im Raum aufzuzeichnen
Was tun, wenn das Bild nicht mit matplotlib usw. im Docker-Container angezeigt wird?
Ich war für die Pflege des Fabric-Skripts verantwortlich, weiß es aber nicht.> <Für diejenigen, die
Die Geschichte, als ich von Caused by SSLError abhängig war ("Kann keine Verbindung zur HTTPS-URL herstellen, da das SSL-Modul nicht verfügbar ist.")
Hinweis zum Standardverhalten von collate_fn in PyTorch
Ich habe die Grundoperation von Seaborn im Jupyter Lab geschrieben
Ändern des Aufbewahrungszeitraums für CloudWatch-Protokolle in Lambda
Überprüfen Sie, ob der Docker-Container keine Verbindung zum Internet herstellt
Ich habe ein wenig versucht, das Verhalten der Zip-Funktion
Ich habe die Grundoperation von Numpy im Jupyter Lab geschrieben.
[Python] Tensorflow 2.0 unterstützte Python 3.8 nicht, daher die Geschichte des Downgrades von Python
Die Geschichte des Ausschlusses / Einschlusses, die Serverless Framework-Anfänger in Pythonista für Anfänger missverstanden (nicht verstanden) haben