Dockerfiles

什麼是 Dockerfile 以及如何使用它 Dockerfile 是建構 Docker 映像檔的配方。 這是工作流程:首先建立一個 Dockerfile,然後使用 docker build 從中建立一個 Docker 映像檔,最後從映像檔執行容器。 Dockerfile 是一個包含建構映像檔指令的文字檔案。 這些指令是部分組態語言,其中包含 FROM、LABEL、RUN、COPY、ENTRYPOINT、CMD、EXPOSE、ENV 等關鍵字。 讓我們建立我們的第一個 Dockerfile: 假設你有一個包含簡單 Node.js 應用程式的資料夾,由一個 app.js 檔案組成,該檔案列出了在運行應用程式之前需要安裝的幾個相依性,以及 package-lock.json。 在其中,創建一個名為 Dockerfile 的純文字檔案,不要加上副檔名,並包含以下內容: FROM node:14 WORKDIR /usr/src/app COPY package\*.json app.js ./ RUN npm install EXPOSE 3000 CMD ["node", "app.js"] 注:CMD 行中使用雙引號。單引號會導致錯誤。 在第一行中,我們指定要從哪個映像檔開始。這將是我們的基底映像檔。在這個案例中,它將使用基於 Alpine Linux 的官方 Node.js 映像檔,使用 Node 14。當從 Dockerfile 建立容器時,Docker 將從 Docker Hub 獲取該映像檔。 接下來,我們將工作目錄設定為 /usr/src/app,這意味著我們的所有命令都將在該資料夾中執行,直到我們再次更改它。這是我們已知在 Node 映像檔中存在的資料夾。 我們複製位於當前資料夾中的 package.json、package-lock.json(使用星號萬用字元)和 app.js 檔案到工作目錄中。...

React: 展示型组件與容器型组件

在React中,組件通常被分為兩大類:展示型組件和容器型組件。 每個組件都具有其獨特的特性。 展示型組件主要關注生成要輸出的標記。 它們不管理任何類型的狀態,除非與展示相關的狀態。 容器型組件主要關注“後端”操作。 它們可能處理各種子組件的狀態。 它們可能包裝幾個展示型組件。 它們可能與Redux進行交互。 為了簡化區分,我們可以說展示型組件關注外觀,容器型組件關注使事情運作。 例如,這是一個展示型組件。它從其props中獲取數據,並僅關注顯示元素: const Users = props => ( <ul> {props.users.map(user => ( <li>{user}</li> ))} </ul> ) 另一方面,這是一個容器型組件。它管理並存儲自己的數據,並使用展示型組件來顯示它: class UsersContainer extends React.Component { constructor() { this.state = { users: [] } } componentDidMount() { axios.get('/users').then(users => this.setState({ users: users })) ) } render() { return <Users users={this.state.users} /> } }

從頭開始創建一個簡單的 Node.js Hello World Docker 容器

在Dockerfile介紹文章中,我介紹了一個簡單的 Node.js Dockerfile 示例: FROM node:14 WORKDIR /usr/src/app COPY package*.json app.js ./ RUN npm install EXPOSE 3000 CMD ["node", "app.js"] 注意:在CMD行中使用雙引號。單引號將導致錯誤。 讓我們使用這個 Dockerfile 构建一個映像,然後運行容器。 我將在 dev/docker/examplenode 文件夾中創建這個文件。我在 app.js 文件中創建了一個簡單的 Node.js 應用,使用 Express 框架: const express = require('express') const app = express() app.get('/', (req, res) => res.send('Hello World!')) app.listen(3000, () => console.log('Server ready')) 非常簡單,但是我們有一個依賴項。我需要將它添加到 package.json 文件中,所以我運行了以下命令: npm init -y npm install express 現在你可以運行 node app.js 確保它正常運行: 停止這個進程,現在讓我們從這個創建一個 Docker 映像。 你只需要保留 app.js、package.json 和 package-lock....