这是我的docker-compose.yml
version: '3.9'
networks:
bedrock:
services:
web:
container_name: kawa-web
image: nginx:stable-alpine
volumes:
- ./:/var/www/html:delegated
- ./docker/nginx/nginx.conf:/etc/nginx/conf.d/default.conf
ports:
- 8080:80
depends_on:
- php
- mysql
networks:
- bedrock
php:
container_name: kawa-php
image: nanoninja/php-fpm:8.0
volumes:
- ./:/var/www/html
- ./docker/config/php.ini:/usr/local/etc/php/conf.d/php.ini
ports:
- 9000:9000
networks:
- bedrock
mysql:
container_name: kawa-db
image: mysql:8
volumes:
- ./docker/db:/var/lib/mysql:delegated
ports:
- 3306:3306
command: --default-authentication-plugin=mysql_native_password
environment:
- MYSQL_ROOT_PASSWORD=${DB_PASSWORD}
networks:
- bedrock
node:
container_name: kawa-node
build:
context: .
dockerfile: node.dockerfile
volumes:
- ./:/var/www/html
networks:
- bedrocknode.dockerfile含量
FROM node:18-alpine
WORKDIR /var/www/html
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 8080当我运行docker compose up -d时,它显示
failed to solve: error from sender: open /path/to/project/docker/db/#innodb_temp: permission denied我怎么才能解决这个问题?或者在PHP容器中运行nodejs的任何其他方式?
发布于 2022-06-06 10:41:47
当您的组合设置具有:
services:
mysql:
volumes:
- ./docker/db:/var/lib/mysql:delegated
node:
build:
context: .MySQL数据目录位于./docker/db目录中。它位于Node应用程序的.构建上下文目录中,因此docker-compose build和其他事情一样将整个MySQL数据发送给自己,如果数据库当前正在运行,您可能会遇到这样的锁或权限问题。
解决这一问题的最佳方法是将应用程序拆分为不同的目录,并让每个语言组件只构建自己的子目录。
$ ls -1F
data/
docker-compose.yml
js/
php/
static/
$ ls -1F js
Dockerfile
index.js
node_modules/
package.json
package-lock.json# docker-compose.yml
version: '3.8'
services:
...
mysql:
image: mysql:8
volumes:
- ./data/db:/var/lib/mysql:delegated
ports:
- 3306:3306
command: --default-authentication-plugin=mysql_native_password
environment:
- MYSQL_ROOT_PASSWORD=${DB_PASSWORD}
node:
build: ./js(请注意,我使用了build:的简短语法来使用上下文目录中的默认Dockerfile;使用撰写提供的default网络删除了不必要的container_name:和networks:选项;删除了覆盖图像内容的volumes:。确保./js/Dockerfile有一个CMD指令,说明如何启动容器。)
https://stackoverflow.com/questions/72515828
复制相似问题