--- backend
-- model
-- controller
如果执行
WORKDIR /app
COPY backend .
容器内的app底下是model和controller目录,并不是backend目录。正确做法是:
COPY backend ./backend
src
node_modules
package.json
package-lock.json
dockerfile部分代码
FROM node:8.12-alpine
RUN mkdir -p /app
WORKDIR /app
COPY package.json .
COPY package-lock.json .
RUN npm install
...
我们在容器内生成了项目所依赖的node_modules文件。这是docker的build阶段。 之后在run启动阶段时,在mouted共享目录时要特别小心,如果挂载整个项目,容器内的node_modules会被项目中的覆盖。 最好把需要挂载的文件单独放到一个目录中。
mysql:
build: ./docker-build/mysql
ports:
- "33060:3306"
volumes:
- ./docker-build/mysql/data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: ${DOCKER_MYSQL_PASSPORD-123456}
.env文件
DOCKER_MYSQL_PASSPORD=mypassord
比如下面的${DOCKER_MYSQL_PASSPORD-123456}
表示优先去.env
文件找定义的key值,如果没有则使用默认值,即123456。
docker-compose.yml 受版本控制,.env不受。更多细节参考
php aritsan
是不行的,
需要进到容器里执行,或者在宿主机执行docker-compose exec <mycontainer> php artisan
或者是docker exec -it <mycontainer> php artisan
kill -USR2 1
,容器外执行docker exec -it <mycontainer> kill -USR2 1
\