I've been trying to get a simple Nuxt 3 up and running with docker, yarn, and workspaces with the following setup:
mkdir nuxt-app
cd nuxt-app
yarn init -p
using just the defaultsmkdir config
mkdir config/admin
config/admin
mkdir packages
npx nuxi init packages/admin
cd packages/admin
yarn init -p
What the directory looks like
./config
- admin
- Dockerfile
./packages
- admin
nuxt...
./packages.json
./.dockerignore
./docker-compose.yml
docker-compose.yml
version: '3.7'
services:
admin:
container_name: admin_app
command: yarn dev
stdin_open: true
tty: true
ports:
- 3030:3030
build:
dockerfile: Dockerfile
context: ./config/admin
volumes:
- "./packages/admin:/admin"
Dockerfile
FROM node:lts-alpine
WORKDIR /admin
COPY ./package.json yarn.lock ./
RUN yarn install
RUN yarn admin:build
EXPOSE 8000
CMD [ "yarn", "serve" ]
package.json {root}
{
"name": "docker.nuxt",
"version": "1.0.0",
"private": true,
"workspaces": [
"packages/*"
],
"scripts": {
"admin": "yarn --cwd packages/admin dev",
"admin:build": "yarn --cwd packages/admin build"
}
}
Then when I run docker-compose up
it throws and error admin_app| /bin/sh: nuxt: not found
.
UPATED: So got it working on localhost with some help. Hope this helps anyone else looking to do this.
Dockerfile
FROM node:lts-alpine AS dependencies
WORKDIR /app
COPY ./package.json ./yarn.lock ./
COPY ./packages/admin ./packages/admin/
RUN yarn install
# Build .output
RUN yarn admin:build
ENV NITRO_PORT=3030
ENV NITRO_PRESET=node-server
EXPOSE 3030
CMD ["node", "./packages/admin/.output/server/index.mjs"]
version: '3.7'
services:
admin:
container_name: admin_app
ports:
- "3030:3030"
build:
dockerfile: ./config/admin/Dockerfile
context: .
Package.json
{
"name": "nuxt.app",
"version": "1.0.0",
"private": true,
"workspaces": [
"packages/*"
],
"scripts": {
"admin": "yarn --cwd packages/admin dev",
"admin:install": "yarn --cwd packages/admin install",
"admin:build": "yarn --cwd packages/admin build",
"admin:start": "yarn --cwd packages/admin start",
}
}