关于阿里云:记录一次阿里云-ECS-dockercompose-部署

28次阅读

共计 2156 个字符,预计需要花费 6 分钟才能阅读完成。

申明:这是我第一次独立残缺的实现一次阿里云的单台服务器,docker-compose 部署,我不能保障我的做法是合乎最佳实际的,有可能还是谬误的,所以请各位辩证对待,帮忙纠正!

首先去申请了一台收费的阿里云服务器,期限为一个月

地址:
https://free.aliyun.com/?spm=5176.15218677.J\_3610715980.3.da8265ddqqlV3e
类型截图:

在 ECS 装置 docker

参考文章:
https://help.aliyun.com/document_detail/51853.html

在 ECS 装置 docker-compose

这里有个坑,个别举荐办法是
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
然而因为网络问题很难胜利。所以这里举荐用第二种办法,通过 pip 来装置。

$pip install --upgrade pip
$pip install docker-compose 

如果装置不胜利,请尝试装置 pip3 并通过 pip3 来装置
pip install docker-compose

部署

这里首先分享下我本地的 docker-compose 的配置:

version: "3.9"
services:
  web:
    build: .
    environment:
      - MONGO_HOSTNAME=mongo
      - MONGO_PORT=27017
    command: npm start
    ports:
      - "3600:3600"
    links:
      - mongo
  mongo:
    image: mongo
    ports:
      - "27017:27017"

在本地通过 docker-compose up 就能不便的启动服务,并能失常工作。
然而我不确定,在阿里云的单台 ECS 部署线上利用的最佳实际,所以我做了

第一个尝试:

  • 首先在本地 build 利用,docker-compose build
mongo uses an image, skipping
Building web
Step 1/6 : FROM node:latest
 ---> 35ccd3263923
Step 2/6 : WORKDIR /usr/src/app
 ---> Using cache
 ---> a0ef79dd5c84
Step 3/6 : COPY package*.json ./
 ---> Using cache
 ---> f588ed7c91fd
Step 4/6 : RUN npm install
 ---> Using cache
 ---> 46b2e77171b8
Step 5/6 : COPY . .
 ---> 3daa6029fb4e
Step 6/6 : EXPOSE 3600
 ---> Running in 7b73e44ccbb5
Removing intermediate container 7b73e44ccbb5
 ---> 15dbff2e656c

Successfully built 15dbff2e656c
Successfully tagged topics-api_web:latest

而后把 build 进去的 image,打上本人想要的标签:
docker tag topics-api_web:latest hiveer/topics-api:0.0.3

而后把打好标签的 image 部署到 docker hub(默认的 docker registry):
docker push hiveer/topics-api:0.0.3

  • 在服务器拉取镜像

docker pull hiveer/topics-api:0.0.3

  • 在服务器启动镜像

docker run hiveer/topics-api:0.0.3

很遗憾,利用启动不起来,起因是 docker run hiveer/topics-api:0.0.3 只启动了 web 利用,并没有启动 mongo 利用。我的第一个 idea 到此宣告失败。

第二个尝试

我在服务器装置了 docker-compose,而后通过 git clone 把我的项目代码拉取到了服务器,而后通过docker-compose up 来启动服务,我的预期是应该可能像本地一样启动服务,然而还是失败了,起因是在启动 web 服务的时候报错了。这里比拟纳闷,为啥本地没问题,这里有问题呢?

思考了一番,我感觉应该是环境起因。依据 docker-compose.yml 文件中 web 服务的设置是,依据本地文件 build 服务,那么因为服务器环境和本地环境的不统一导致了这个谬误。我这时候有了第三个想法。

第三个尝试

我新建了一个 docker-compose-production.ymml 文件,而后我把其中的
build . 改成了
image hiveer/topics-api:0.0.3
这个改变的作用是,让咱们在 build web 服务的时候,应用咱们打包好的镜像,而不是从新去 build,这个就防止了环境差别。
finally,胜利了!

最初我到阿里云的控制台,在平安组中关上了我想要的 3600 端口给 tcp 服务。我如愿以偿的拜访到了我的 API 服务!

我不确定,我的计划是不是最佳实际,然而我确定我分享进去必定能够帮忙到某些敌人。无论成功失败,经验都是一种财产。

正文完
 0