Skip to content

Commit a02f37d

Browse files
authored
Update dockerfile (#198)
* build: update dockerfile * build: inject build args as enviroment variables during node runtime * build: remove redundant build args from .drone.yml * refactor: update .env.sample * style: change the nuxt runtime config variables names to camel case
1 parent 5de4a97 commit a02f37d

File tree

22 files changed

+61
-90
lines changed

22 files changed

+61
-90
lines changed

.drone.yml

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,6 @@ steps:
1515
image: plugins/docker
1616
settings:
1717
repo: josaorg/community-web
18-
build_args:
19-
[
20-
NUXT_COMMUNITY_API_URL=https://community.api.josa.dev/v2,
21-
TARGET_ENV=development,
22-
SESSION_COOKIE_NAME=connect.sid,
23-
]
2418
build_args_from_env:
2519
[
2620
DRONE_BUILD_NUMBER,

.env.sample

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
# endpoint for API
2-
NUXT_COMMUNITY_API_URL=
3-
TARGET_ENV=
4-
DRONE_COMMIT_SHA=
5-
DRONE_BUILD_NUMBER=
6-
DRONE_BUILD_LINK=
7-
DRONE_COMMIT_LINK=
8-
DRONE_REPO_LINK=
9-
DRONE_BUILD_FINISHED=
10-
DEBUG=
11-
SESSION_COOKIE_NAME=
2+
NUXT_PUBLIC_COMMUNITY_API_URL=
3+
NUXT_PUBLIC_TARGET_ENV=
4+
NUXT_PUBLIC_BUILD_COMMIT_SHA=
5+
NUXT_PUBLIC_BUILD_NUMBER=
6+
NUXT_PUBLIC_BUILD_LINK=
7+
NUXT_PUBLIC_BUILD_COMMIT_LINK=
8+
NUXT_PUBLIC_BUILD_REPO_LINK=
9+
NUXT_PUBLIC_BUILD_TIMESTAMP=
10+
NUXT_PUBLIC_DEBUG=
11+
NUXT_PUBLIC_SESSION_COOKIE_NAME=

Dockerfile

Lines changed: 6 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,17 @@
11
# set global args
2-
ARG NUXT_COMMUNITY_API_URL HOST=0.0.0.0 PORT=3000 USER=node TARGET_ENV DRONE_COMMIT_SHA=${DRONE_COMMIT_SHA} DRONE_BUILD_NUMBER=${DRONE_BUILD_NUMBER} DRONE_BUILD_LINK=${DRONE_BUILD_LINK} DRONE_COMMIT_LINK=${DRONE_COMMIT_LINK} DRONE_REPO_LINK=${DRONE_REPO_LINK} DRONE_BUILD_FINISHED=${DRONE_BUILD_FINISHED} DEBUG='false' SESSION_COOKIE_NAME='connect.sid'
2+
ARG USER=node DRONE_COMMIT_SHA=${DRONE_COMMIT_SHA} DRONE_BUILD_NUMBER=${DRONE_BUILD_NUMBER} DRONE_BUILD_LINK=${DRONE_BUILD_LINK} DRONE_COMMIT_LINK=${DRONE_COMMIT_LINK} DRONE_REPO_LINK=${DRONE_REPO_LINK} DRONE_BUILD_FINISHED=${DRONE_BUILD_FINISHED}
33

44
###########
55
# BUILDER #
66
###########
77
FROM node:18.14.0 AS builder
88

9-
# pass the global args
10-
ARG NUXT_COMMUNITY_API_URL
11-
ARG HOST
12-
ARG PORT
13-
ARG TARGET_ENV
14-
ARG DRONE_COMMIT_SHA
15-
ARG DRONE_BUILD_NUMBER
16-
ARG DRONE_BUILD_LINK
17-
ARG DRONE_COMMIT_LINK
18-
ARG DRONE_REPO_LINK
19-
ARG DRONE_BUILD_FINISHED
20-
ARG DEBUG
21-
ARG SESSION_COOKIE_NAME
229

2310
# copy build context and install dependencinpm res
2411
WORKDIR /workspace
2512
COPY . .
2613
RUN npm install
2714

28-
# inject build args as enviroment variables
29-
ENV NUXT_COMMUNITY_API_URL=${NUXT_COMMUNITY_API_URL} HOST=${HOST} PORT=${PORT} TARGET_ENV=${TARGET_ENV} DRONE_COMMIT_SHA=$DRONE_COMMIT_SHA DRONE_BUILD_NUMBER=${DRONE_BUILD_NUMBER} DRONE_BUILD_LINK=${DRONE_BUILD_LINK} DRONE_COMMIT_LINK=${DRONE_COMMIT_LINK} DRONE_REPO_LINK=${DRONE_REPO_LINK} DRONE_BUILD_FINISHED=${DRONE_BUILD_FINISHED} DEBUG=${DEBUG} SESSION_COOKIE_NAME=${SESSION_COOKIE_NAME}
3015
# build NuxtJS project
3116
RUN npm run build
3217

@@ -36,35 +21,27 @@ RUN npm run build
3621
FROM node:18-slim
3722

3823
# pass the global args
39-
ARG NUXT_COMMUNITY_API_URL
40-
ARG HOST
41-
ARG PORT
4224
ARG USER
43-
ARG TARGET_ENV
4425
ARG DRONE_COMMIT_SHA
4526
ARG DRONE_BUILD_NUMBER
4627
ARG DRONE_BUILD_LINK
4728
ARG DRONE_COMMIT_LINK
4829
ARG DRONE_REPO_LINK
4930
ARG DRONE_BUILD_FINISHED
50-
ARG DEBUG
51-
ARG SESSION_COOKIE_NAME
5231

5332
# copy builder output to project workdir
5433
WORKDIR /app
55-
COPY --from=builder --chown=${USER}:${USER} /workspace/.nuxt /app/.nuxt
56-
COPY --from=builder --chown=${USER}:${USER} /workspace/.output /app/.output
57-
COPY --from=builder --chown=${USER}:${USER} /workspace/node_modules /app/node_modules
5834
COPY --from=builder --chown=${USER}:${USER} /workspace/package.json /app/
59-
60-
# inject build args as enviroment variables
61-
ENV NUXT_COMMUNITY_API_URL=${NUXT_COMMUNITY_API_URL} HOST=${HOST} PORT=${PORT} TARGET_ENV=${TARGET_ENV} DRONE_COMMIT_SHA=${DRONE_COMMIT_SHA} DRONE_BUILD_NUMBER=${DRONE_BUILD_NUMBER} DRONE_BUILD_LINK=${DRONE_BUILD_LINK} DRONE_COMMIT_LINK=${DRONE_COMMIT_LINK} DRONE_REPO_LINK=${DRONE_REPO_LINK} DRONE_BUILD_FINISHED=${DRONE_BUILD_FINISHED} DEBUG=${DEBUG} SESSION_COOKIE_NAME=${SESSION_COOKIE_NAME}
35+
COPY --from=builder --chown=${USER}:${USER} /workspace/.output /app/.output
6236

6337
# set user context
6438
USER ${USER}
6539

40+
# inject build args as enviroment variables
41+
ENV NUXT_PUBLIC_BUILD_COMMIT_SHA=${DRONE_COMMIT_SHA} NUXT_PUBLIC_BUILD_NUMBER=${DRONE_BUILD_NUMBER} NUXT_PUBLIC_BUILD_LINK=${DRONE_BUILD_LINK} NUXT_PUBLIC_BUILD_COMMIT_LINK=${DRONE_COMMIT_LINK} NUXT_PUBLIC_BUILD_REPO_LINK=${DRONE_REPO_LINK} NUXT_PUBLIC_BUILD_TIMESTAMP=${DRONE_BUILD_FINISHED}
42+
6643
# expose port
6744
EXPOSE ${PORT}
6845

6946
# run for production
70-
CMD [ "npm", "run", "start"]
47+
CMD [ "node", "/app/.output/server/index.mjs"]

app.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<template>
22
<div class="bg-community-grey-light">
3-
<BuildInfoBanner v-if="config.public.TARGET_ENV === 'development'" />
3+
<BuildInfoBanner v-if="config.public.targetEnv === 'development'" />
44
<PageHeader />
55
<NuxtPage />
66
<PageFooter />

components/BuildInfoBanner.vue

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,26 +6,26 @@
66
<p>
77
<span class="font-bold">Build</span>:
88
<a
9-
:href="config.public.DRONE_BUILD_LINK"
9+
:href="config.public.buildLink"
1010
target="_blank"
1111
rel="noopener noreferrer"
1212
>
13-
#{{ config.public.DRONE_BUILD_NUMBER }}
13+
#{{ config.public.buildNumber }}
1414
</a>
1515
<a
16-
:href="config.public.DRONE_COMMIT_LINK"
16+
:href="config.public.buildCommitLink"
1717
target="_blank"
1818
rel="noopener noreferrer"
1919
>
20-
({{ config.public.DRONE_COMMIT_SHA.slice(0, 6) }})
20+
({{ config.public.buildCommitSha.slice(0, 6) }})
2121
</a>
2222
</p>
2323
</div>
2424
<div class="flex items-center gap-x-4">
2525
<span>🚧</span>
2626
<p>
2727
<span class="font-bold"> Environment: </span>
28-
{{ config.public.TARGET_ENV }}
28+
{{ config.public.targetEnv }}
2929
</p>
3030
<button class="bannerBtn" @click="closeBanner">
3131
<img

components/MobileMenuItems.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<ul class="mobile-menu">
44
<li
55
class="py-4 border-gray"
6-
v-if="config.public.TARGET_ENV === 'development'"
6+
v-if="config.public.targetEnv === 'development'"
77
>
88
<NuxtLink
99
@click="
@@ -30,7 +30,7 @@
3030
</li>
3131
<li
3232
class="py-4 border-gray"
33-
v-if="config.public.TARGET_ENV === 'development'"
33+
v-if="config.public.targetEnv === 'development'"
3434
>
3535
<NuxtLink
3636
@click="

components/PageHeader.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
<ul class="menu">
2020
<li
2121
class="menu-item"
22-
v-if="config.public.TARGET_ENV === 'development'"
22+
v-if="config.public.targetEnv === 'development'"
2323
>
2424
<NuxtLink to="/register" class="nav-link">Join JOSA</NuxtLink>
2525
</li>
@@ -28,7 +28,7 @@
2828
</li>
2929
<li
3030
class="menu-item"
31-
v-if="config.public.TARGET_ENV === 'development'"
31+
v-if="config.public.targetEnv === 'development'"
3232
>
3333
<NuxtLink to="/missions" class="nav-link">Contribute</NuxtLink>
3434
</li>

middleware/auth.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
export default defineNuxtRouteMiddleware(async (to, from) => {
22
const config = useRuntimeConfig()
33
if (process.server) {
4-
if(useCookie(`${config.public.SESSION_COOKIE_NAME}`).value) {
5-
await isAuth(`${config.public.SESSION_COOKIE_NAME}`, useCookie(`${config.public.SESSION_COOKIE_NAME}`).value)
4+
if(useCookie(`${config.public.sessionCookieName}`).value) {
5+
await isAuth(`${config.public.sessionCookieName}`, useCookie(`${config.public.sessionCookieName}`).value)
66
} else {
77
useAuth().value = false
88
}

middleware/loginPage.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
export default defineNuxtRouteMiddleware(async(to, from) => {
33
const config = useRuntimeConfig()
44
if (process.server) {
5-
const cookieName = `${config.public.SESSION_COOKIE_NAME}`
5+
const cookieName = `${config.public.sessionCookieName}`
66
if(useCookie(cookieName).value) {
77
await isAuth(cookieName, useCookie(cookieName).value)
88
} else {

middleware/register.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
export default defineNuxtRouteMiddleware(async(to, from) => {
22
const config = useRuntimeConfig()
33
if (process.server) {
4-
const cookieName = `${config.public.SESSION_COOKIE_NAME}`
4+
const cookieName = `${config.public.sessionCookieName}`
55
if(useCookie(cookieName).value) {
66
await isAuth(cookieName, useCookie(cookieName).value)
77
} else {

0 commit comments

Comments
 (0)