[GO] J'étais en difficulté car le comportement du conteneur docker n'a pas changé

introduction

Même si j'ai changé le code, le comportement de l'application dans le conteneur n'a pas changé, ce qui était un problème. Ceci est un mémo sur la façon d'y faire face. (Ce n'est pas le système que le cache fonctionnait)

Remède d'abord

Le ʻapp (fichier d'exécution) construit dans le Dockerfile a été écrasé par ʻapp dans le répertoire local des volumes définis dans docker-compose.yml. Par conséquent, je l'ai résolu en le changeant pour qu'il ne soit pas monté de manière excessive.

Problem

  1. Une application golang a été créée dans le conteneur Docker
  2. J'essaye d'acheter l'application dans le Dockerfile pour démarrer l'application.
  3. Par exemple, modifiez et enregistrez main.go.
  4. Recréez et lancez l'application avec docker-compose up -d --build
  5. Cela? Cela n'a pas changé! ?? (La construction est en cours d'exécution)
  6. Essayez docker-compose build --no-cache mais pareil ...

Structure du répertoire ↓

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

Extrait de code partiel ↓

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

Cause

La cause était l'application locale que j'essayais de créer. L'ordre d'exécution de la commande est RUN → volumes → CMD, et l''app intégrée au conteneur a été écrasée par l''app locale.

approche

Ne montez pas de fichiers supplémentaires

Dans ce cas, seules les informations de session devaient être conservées et enregistrées, ce seul fichier était donc suffisant pour partager le fichier.

docker-compose.yml


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

Exclure les fichiers qui ne doivent pas être partagés

Pendant le développement, il est plus pratique de monter et de modifier le code source. Par conséquent, j'ai pensé que ce serait une bonne idée de ne pas partager uniquement «appl». (Comment en exclure certains lors du montage de Volume avec Docker)

en conclusion

En premier lieu, alors que je faisais des changements de code dans le but de rendre les informations de session persistantes, cela s'est produit. (Il existe également une différence entre le serveur de production et le serveur de développement) Finalement, nous passerons à la gestion des bases de données. (Dont)

Recommended Posts

J'étais en difficulté car le comportement du conteneur docker n'a pas changé
J'avais des problèmes car la chaîne de caractères dans le PDF était étrange
L'histoire du débogage dans l'environnement local car la compilation n'a pas fonctionné avec Read the Docs
Le résultat de l'analyse de la "critique du jugement" de Kant que je n'ai pas lu du tout était intéressant
J'ai vérifié le contenu du volume du docker
Vérifiez le comportement du destroyer en Python
En Python, changez le comportement de la méthode en fonction de la façon dont elle est appelée
Changer la taille de police de la légende dans df.plot
Comportement lorsque Container Trainable = False dans Keras
Entrez dans stdin du conteneur Docker en cours d'exécution
Placez Python3 dans le conteneur Docker d'Amazon Linux2
Je vais résumer ce que j'ai été heureux de faire pour sortir de l'état où je ne connais même pas la lettre D de Docker
À propos du fait que le contenu de l'impression Python n'est pas visible dans les journaux du docker
En voici une, je vais résumer les applications équipées "d'intelligence artificielle" qui m'intéressaient
Ce que j'ai fait quand j'étais en colère de le mettre avec l'option enable-shared
Mémo de code en difficulté car il n'était pas répertorié sur le site discord.py
[Probabilité] Je vais expliquer parce que le problème du robot de Center 2020 Mathematics 1 · A était intéressant.
Modifier le fuseau horaire dans Oracle Database Docker
Les performances de PHP étaient meilleures que ce à quoi je m'attendais
Ne pas être conscient du contenu des données en python
L'histoire selon laquelle yapf n'a pas fonctionné avec vscode
La ventilation est importante. Ce que j'ai fait pour garder une trace de la concentration de C02 dans la pièce
Que faire si l'image n'est pas affichée à l'aide de matplotlib etc. dans le conteneur Docker
J'étais en charge de la maintenance du script Fabric, mais je ne sais pas.> <À ceux qui
L'histoire quand j'étais accro à Caused by SSLError ("Impossible de se connecter à l'URL HTTPS car le module SSL n'est pas disponible.")
Remarque sur le comportement par défaut de collate_fn dans PyTorch
J'ai écrit le fonctionnement de base de Seaborn dans Jupyter Lab
Modifier la période de conservation des journaux CloudWatch Logs dans Lambda
Vérifier quand le conteneur Docker ne se connecte pas à Internet
J'ai essayé un peu le comportement de la fonction zip
J'ai écrit le fonctionnement de base de Numpy dans Jupyter Lab.
[Python] Tensorflow 2.0 ne supportait pas Python 3.8, donc l'histoire de la rétrogradation de Python
L'histoire d'exclure / d'inclure que les débutants de Serverless Framework ont mal compris (n'ont pas compris) dans Pythonista débutant