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)
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
Dockerfile
pour démarrer l'application.main.go
.docker-compose up -d --build
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
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.
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"
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 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)