我构建了 docker 镜像,并将当前目录文件复制到 usr/share/nginx/html 中。
FROM nginx:alpine
COPY . /usr/share/nginx/html
EXPOSE 80
我定义了要复制到卷挂载文件的 yaml 文件。
apiVersion: apps/v1
kind: Deployment
metadata:
name: backend-frontend
spec:
replicas: 2
selector:
matchLabels:
app: backend-frontend
template:
metadata:
labels:
app: backend-frontend
spec:
containers:
- name: backend
image: suryeon/project3-backend:project
volumeMounts:
- name: shared-volume
mountPath: "/app/frontend"
ports:
- containerPort: 3000
env:
- name: MYSQL_HOST
value: mysql-service
- name: MYSQL_DATABASE
value: project3
- name: frontend
image: suryeon/project3-frontend:project
volumeMounts:
- name: shared-volume
mountPath: "/app/frontend"
command: ["/bin/sh", "-c"]
args:
- |
echo "Starting to copy files from /usr/share/nginx/html to /app/frontend" &&
cp -r /usr/share/nginx/html/* /app/frontend &&
echo "Starting Nginx server" &&
nginx -g 'daemon off;'
ports:
- containerPort: 80
imagePullSecrets:
- name: my-docker-registry-secret
volumes:
- name: shared-volume
emptyDir: {}
但是当我检查pod中挂载的目录时,nginx默认提供的只有index.html和50x.html。我该如何解决这个问题?
PS C:\Users\suryeon\Onedrive\project2-2> kubectl exec -it backend-frontend-6979db74c7-df74n -c frontend -- ls /usr/share/nginx/html
50x.html index.html
你抄错了。暂时忘掉有关 Kubernetes 和 Pod 的一切吧。
docker run --rm --entrypoint=/bin/bash suryeon/project3-frontend:project -c "ls -l /usr/share/nginx/html"
如果这没有列出您复制的内容,那么您就有问题了,您不应该在 k8s 资源中使用
args:
来修复它。
检查您的
.dockerignore
或您在 docker build
中使用的文件夹/上下文,因此在构建图像时设置为 COPY .
。