我制作了以下 dockerfile 来包含我的 node js 应用程序,问题是构建 dockerfile 时出现错误:
Sending build context to Docker daemon 2.048kB
Step 1/7 : FROM node:10
---> 0d5ae56139bd
Step 2/7 : WORKDIR /usr/src/app
---> Using cache
---> 5bfc0405d8fa
Step 3/7 : COPY package.json ./
COPY failed: stat /var/lib/docker/tmp/docker-
builder803334317/package.json: no such file or directory
Run Code Online (Sandbox Code Playgroud)
这是我的 dockerfile:
FROM node:10
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 8080
CMD [ "npm", "start" ]
Run Code Online (Sandbox Code Playgroud)
我执行了命令:sudo docker build - < Dockerfile
进入我的根项目文件夹。
我的项目文件夹很简单,像这样:
-Project
-app.js …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 docker-compose 部署一个简单的节点 - redis 架构。
我有一个带有 redis 数据备份的dump.rdb,我想启动一个加载了该数据的容器。
我的 docker-compose.yml 看起来像这样:
version: '3'
services:
redis:
image: redis:alpine
container_name: "redis"
ports:
- "6379:6379"
server:
build: ./src
image: hubName:imageName
container_name: containerName
links:
- redis
depends_on:
- "redis"
ports:
- "8443:8443"
restart: always
Run Code Online (Sandbox Code Playgroud)
我应该包括卷吗?如果我想要持久化 redis 数据怎么办?
谢谢 :)
我正在尝试在 nodejs 中使用下面的代码
if (process.env.NODE_ENV !== 'production')
Run Code Online (Sandbox Code Playgroud)
我试图从 docker 文件中设置 NODE_ENV 变量,如下所示。
FROM collinestes/docker-node-oracle:10-slim
ENV NODE_ENV=production
EXPOSE 8085
CMD ["npm","start"]
Run Code Online (Sandbox Code Playgroud)
如果我运行我的 docker 镜像,它不会启动并抛出错误。如果我删除 NODE_ENV 一切正常。这是从 dockerfile 设置 NODE_ENV 的正确方法吗?
我正在使用 Slim 框架 (PHP) 为我的第一个项目学习 docker。我创建了一个 dockerfile 来构建一个包含所有源代码的图像。当我使用 run 命令运行图像时,它会显示我
<b>Warning</b>: Unknown: php_network_getaddresses: getaddrinfo failed: Name does not resolve in <b>Unknown</b> on line <b>0</b><br />
[Sat Jun 15 09:41:14 2019] Failed to listen on 127.0.0.1:8080 (reason: php_network_getaddresses: getaddrinfo failed: Name does not resolve)
Run Code Online (Sandbox Code Playgroud)
Dockerfile 看起来像:
FROM php:7-alpine
COPY . /var/www
WORKDIR /var/www
CMD [ "php", "-S 127.0.0.1:8080 -t public" ]
Run Code Online (Sandbox Code Playgroud)
Docker 运行命令是:
sudo docker run -it --rm --network="host" --expose 8080 --name cm2 collection_manager_1
Run Code Online (Sandbox Code Playgroud)
不知道我该如何解决这个问题。有人能帮我吗?
我对 RabbitMQ 还很陌生,我正在开发一个 POC 来运行在 docker 容器中使用 RabbitMQ 的 C# 解决方案。
我设法编写了 docker-compose.yml、dockerfile 并运行了 RabbitMQ。但是,我的解决方案无法访问 RabbitMQ 主机。我想我可能缺少一些配置,但我不知道是什么。
docker-compose.yml
version: '3.4'
services:
rabbit-sender:
image: rabbit-sender
container_name: rabbit-sender
build:
context: ../SenderRabitMQ
dockerfile: debug.Dockerfile
env_file: common.env
networks:
- rabbitPoc
expose:
- "80"
rabbit-receiver:
image: rabbit-receiver
container_name: rabbit-receiver
build:
context: ../ReceiveRabitMQ
dockerfile: debug.Dockerfile
env_file: common.env
networks:
- rabbitPoc
expose:
- "80"
rabbitmq:
image: rabbitmq:3.7.15
hostname: rabbitmq
build:
context: rabbit
dockerfile: debug.Dockerfile
ports:
- "5672:5672"
- "15672:15672"
volumes:
- "./enabled_plugins:/etc/rabbitmq/enabled_plugins"
Run Code Online (Sandbox Code Playgroud)
调试.Dockerfile
Install RabbitMQ
FROM ubuntu:14.04.1 …Run Code Online (Sandbox Code Playgroud) 我在具有以下基本映像的容器中运行我的应用程序:
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-stretch-slim AS base
当我发布应用程序时,容器时区是Greenwich Mean Time,因此我在数据库中的 NLog 条目关闭了 6 小时。
我可以通过进入容器并运行来更改时区,
dpkg-configure tzdata并且在重新启动容器后,我的日志条目变得正常。但是,我想知道这是否可以通过 Dockerfile 或运行标志来完成?
我正在设置 travis-ci 以在它们提交到 github 时构建和推送 docker 图像。
但是即使 api 和 nginx 图像成功,客户端 docker 图像也不会构建并推送到 docker hub。
源代码在这里:https :
//github.com/jpskgc/article
这是 .travis.yml
language: generic
sudo: required
services:
- docker
before_install:
- docker build -t jpskgc/react-test -f ./client/Dockerfile.dev ./client
script:
- docker run -e CI=true jpskgc/react-test npm test
after_success:
- docker build -t jpskgc/multi-client ./client
- docker build -t jpskgc/multi-nginx ./nginx
- docker build -t jpskgc/multi-api ./api
- echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_ID" --password-stdin
- docker …Run Code Online (Sandbox Code Playgroud) {
"containerDefinitions": [
{
"name": "container-using-efs",
"image": "amazonlinux:2",
"entryPoint": [
"sh",
"-c"
],
"command": [
"ls -la /mount/efs"
],
"mountPoints": [
{
"sourceVolume": "myEfsVolume",
"containerPath": "/mount/efs",
"readOnly": true
}
]
}
],
"volumes": [
{
"name": "myEfsVolume",
"efsVolumeConfiguration": {
"fileSystemId": "fs-1234",
"rootDirectory": "/path/to/my/data"
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
我创建了一个 EFS 文件系统,分配给它的安全组允许入站 NFS,并且 EFS 使用该安全组以及我的 ECS 集群使用的子网和 VPC
问题
当我使用 AWS 管理控制台在我的任务定义中创建挂载点时,我必须输入containerPathelsemountPoints未反映在我的 JSON 中
题
1)我应该containerPath在mountPoints什么之下?
2)我应该指定一个rootDirectoryunder …
amazon-web-services amazon-ecs docker dockerfile docker-compose
美好的一天,
我知道这是不好的做法,我应该每个容器有一个应用程序,但是有没有办法让我在同一个容器中同时运行两个服务,我将如何为它编写 Dockerfile?
我当前用于 Flask(后端)应用程序的 Dockerfile:
FROM python:3.6.9-slim-buster
WORKDIR /app/flask_backend
ENV PYTHONPATH "${PYTHONPATH}:/app"
COPY ./flask_backend ./
COPY requirements.txt .
RUN pip install -r requirements.txt
CMD python3 app/webapp/app.py
Run Code Online (Sandbox Code Playgroud)
我的 React(前端)Dockerfile:
FROM node:12.18.0-alpine as build
WORKDIR /app/react_frontend
ENV PATH /app/node_modules/.bin:$PATH
ENV NODE_OPTIONS="--max-old-space-size=8192"
COPY ./react_frontend/package.json ./
COPY ./react_frontend/package-lock.json ./
RUN npm ci
RUN npm install react-scripts@3.4.1 -g
RUN npm install serve -g
COPY ./react_frontend ./
CMD ["serve", "-s", "build", "-l", "3000"]
Run Code Online (Sandbox Code Playgroud)
我尝试在同一个 Docker 容器中启动两个应用程序是为了合并两个 Dockerfile,但生成的容器没有来自第一个 Dockerfile 的数据,我不确定如何继续。
我合并的 Dockerfile:
FROM python:3.6.9-slim-buster
WORKDIR /app/flask_backend …Run Code Online (Sandbox Code Playgroud) 我有两个码头集装箱。一个容器是数据库,另一个是 Web 应用程序。Web 应用程序通过此链接 http://localhost:7200 调用数据库。但是,Web 应用程序 docker 容器无法到达数据库容器。
我试过这个 docker-compose.yml,但不起作用:
version: '3'
services:
web:
# will build ./docker/web/Dockerfile
build:
context: .
dockerfile: ./docker/web/Dockerfile
links:
- graph-db
depends_on:
- graph-db
ports:
- "8080:8080"
environment:
- WAIT_HOSTS=graph-db:7200
networks:
- backend
graph-db:
# will build ./docker/graph-db/Dockerfile
build:
./docker/graph-db
hostname: graph-db
ports:
- "7200:7200"
networks:
backend:
driver: "bridge"
Run Code Online (Sandbox Code Playgroud)
所以我有两个容器: Web 应用程序:http://localhost:8080/reasoner,这个容器调用位于不同容器中的 http://localhost:7200 中的数据库。但是,Web 容器无法访问数据库容器。
解决方案
version: '3'
services:
web:
# will build ./docker/web/Dockerfile
build:
context: .
dockerfile: ./docker/web/Dockerfile
depends_on:
- graph-db
ports:
- …Run Code Online (Sandbox Code Playgroud) docker ×10
dockerfile ×10
amazon-ecs ×1
asp.net-core ×1
c# ×1
nlog ×1
node.js ×1
rabbitmq ×1
reactjs ×1
redis ×1
travis-ci ×1
tzdata ×1