Docker
Installation
Installera Windows Subsystem Linux 2, en guide finns hÀr.
Om du installerar en ny distribution:
sudo apt update
sudo apt upgrade -y
Installera Docker desktop för Windows.
Kör igenom Dockers Get started Tutorial i programmet.
Se till att du har Remote extension för Visual Studio Code, den hÀr.
NÀsta steg Àr att konfigurera Docker sÄ att det anvÀnder WSL2, se fig 1 och att det har tillgÄng till WSL, fig 2.


Du kan eventuellt behöva starta om datorn, WSL och eller Docker efter detta. Men du ska kunna starta WSL och köra kommandot docker. Docker körs dÄ frÄn Windows, men finns tillgÀngligt frÄn WSL.
docker
Ett första test med Node
Innan du kommer igÄng sÄ krÀvs det att du installerar lite programvara lokalt.
sudo apt install curl dirmngr apt-transport-https lsb-release ca-certificates -y
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
sudo apt install nodejs -y
sudo npm i -g express express-generator
NÀsta steg Àr att skapa ett Express-projekt som kommer utgöra basen för denna container.
mkdir wsp1-docker-node
cd wsp1-docker-node
express --view pug --css sass --git
npm install
För att underlÀtta utvecklingen anvÀnds Àven nodemon.
npm install --save-dev nodemon
Starta sedan Visual Studio Code.
code -r .
LÀgg sedan till följande kod sÄ att nodemon körs.
"scripts": {
"start": "nodemon ./bin/www"
},
Docker filer
Docker utgÄr frÄn ett antal konfigurationsfiler för att skapa en image. Denna image Àr det som körs och anvÀnds i en Docker container. Skapa följande filer i projektmappen.
version: "3"
services:
node:
container_name: nodejs
image: "node:12"
user: "node"
working_dir: /var/www
environment:
- NODE_ENV=development
volumes:
- ./:/var/www
ports:
- "3000:3000"
command: "npm start"
FROM node:12
WORKDIR /var/www
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "start"]
Om du har skapat Express-projektet, Docker-filerna och allt fungerar sÄ Àr du redo att skapa en image och testa den.
docker-compose up -d
VÀnta pÄ att imagen ska skapas, sedan öppnar du Docker-grÀnssnittet. Navigera till Containers och prova att öppna projektet i en webblÀsare. Om allt fungerar sÄ öppnas ditt Express projekt.

Ăppna sedan projektet med Visual Studio Code och prova att redigera projektets index filer. Ladda sedan om sidan i webblĂ€saren.
res.render('index', { title: 'Docker' });
Praktiskt
Denna instruktion utgÄr frÄn att du ska klona och köra igÄng ett repo, i detta fallet SoloÀventyret.
git clone --single-branch --branch docker https://github.com/jensnti/wsp1-node-solo
Docker filerna följer med för detta, vill du klona ditt eget soloÀventyr sÄ Àr det följande filer du behöver. Notera mappen för my.cnf.
Filerna kommer att starta 2 containers.
nodedev
Kör node:12.
Kör npm start frÄn package.json
PĂ„ port 3000
nodedb
Kör mysql:8
Skapar anvÀndare och databas.
database: soloadventure
root password: password123
cd wsp1-node-solo
npm install
cp .env-example .env
Efter att projektet klonats ned och install Àr kört sÄ behöver det köras lite kommandon för att fÄ allt att fungera. Kör följande kommando för att bygga en image och starta den som en tjÀnst.
docker-compose up -d --build
Om kommandot fungerar som det ska sÄ startas dina containers, se Fig 3.

NÀsta steg blir att slutföra konfigurationen av databasanvÀndaren och ladda in databasen. För att göra det behöver du koppla upp dig mot databas-containers bash.
docker-compose exec db bash
VÀl inne startar du mysql som root. Lösenordet ska vara password123.
mysql -u root -p
AnvÀndaren till kontot skapades tillsammans med databasen tidigare, men permissions behövs fortfarande sÀttas och uppdateras för node.
CREATE USER 'solouser'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON soloadventure.* TO 'solouser'@'%';
ALTER USER 'solouser'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
FLUSH PRIVILEGES;
NÀr detta Àr gjort sÄ Àr det sista steget att importera databasen. Detta kan vi göra med tableplus. Skapa en ny uppkoppling, Fig 4.

VÀlj databas och sedan Import, databas-dumpen finns hÀr. Se Fig 5.

Förhoppningsvis sÄ kan du nu surfa till localhost och testa Àventyret. Om du behöver bygga om din image.
docker-compose up -d --build
Snabbstart
Filer för att skapa en image med node, npm och databas.
Skapa ett nytt Express-projekt eller klona ett frÄn Git.
Skapa följande konfigurationsfiler i mappen.
Se till att Docker Àr igÄng.
Kör
docker-compose up -d build
Du bör nu kunna surfa till localhost
FROM node:12
# Create app directory
WORKDIR /var/www
# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5+)
COPY package*.json ./
RUN npm install
# If you are building your code for production
# RUN npm ci --only=production
# Add user for application
RUN groupadd -g 1000 www
RUN useradd -u 1000 -ms /bin/bash -g www www
# Bundle app source
COPY . .
# Change current user to www
USER www
EXPOSE 3000
CMD ["npm", "start"]
För att konfigurera databasen behöver du koppla upp dig till den, skapa anvÀndaren och konfigurera rÀttigheterna.
CREATE USER 'username'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON databasename.* TO 'username'@'%';
ALTER USER 'username'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
FLUSH PRIVILEGES;
Last updated
Was this helpful?